@@ -49,7 +49,7 @@ peer、member 和 accessor 宏角色需要一个 `names:` 参数,列出宏生
49
49
50
50
- ` suffixed(<#suffix#>) ` 其中 * suffix* 被附加到符号名称后,用于以固定字符串结尾的名称。
51
51
52
- - ` arbitrary ` 用于一个在宏展开之前无法确定的名称。
52
+ - ` arbitrary ` 用于一个在宏展开之前无法确定的名称。
53
53
54
54
作为一个特殊情况,你可以为一个行为类似于属性包装器的宏编写 ` prefixed($) ` 。
55
55
<!--
@@ -1260,7 +1260,7 @@ struct ArrayBuilder {
1260
1260
```
1261
1261
-->
1262
1262
- 赋值语句的转换方式类似于表达式,但被理解为计算 ` () ` 。你可以定义一个 ` buildExpression(_:) ` 的重载,它采用 ` () ` 类型的参数来专门处理赋值。
1263
- - 检查可用性条件的分支语句将成为对 buildLimitedAvailability(_ :) 方法的调用(如果该方法已实现)。如果未实现 ` buildLimitedAvailability(_:) ` 方法,那么检查可用性的分支语句将使用与其他分支语句相同的转换。这种转换发生在转换为对 ` buildEither(first:) ` 、` buildEither(second:) ` 或 ` buildOptional(_:) ` 的调用之前。
1263
+ - 检查可用性条件的分支语句将成为对 buildLimitedAvailability(_ :) 方法的调用(如果该方法已实现)。如果未实现 ` buildLimitedAvailability(_:) ` 方法,那么检查可用性的分支语句将使用与其他分支语句相同的转换。这种转换发生在转换为对 ` buildEither(first:) ` 、` buildEither(second:) ` 或 ` buildOptional(_:) ` 的调用之前。
1264
1264
1265
1265
你可以使用 ` buildLimitedAvailability(_:) ` 方法来擦除根据所采用的分支而变化的类型信息。例如,下面的 ` buildEither(first:) ` 和 ` buildEither(second:) ` 方法使用一个泛型类型,该类型捕获有关两个分支的类型信息。
1266
1266
@@ -1452,7 +1452,7 @@ struct ArrayBuilder {
1452
1452
>> assert(builderOptional == manualOptional)
1453
1453
```
1454
1454
-->
1455
- - 如果结果构造器实现了 ` buildPartialBlock(first:) ` 和 ` buildPartialBlock(accumulated:next:) ` 方法,则代码块或 ` do ` 语句将变成对这些方法的调用。块内的第一条语句被转换为 ` buildPartialBlock(first:) ` 方法的一个参数,其余语句则变成对 ` buildPartialBlock(accumulated:next:) ` 方法的嵌套调用。例如,以下声明是等效的:
1455
+ - 如果结果构造器实现了 ` buildPartialBlock(first:) ` 和 ` buildPartialBlock(accumulated:next:) ` 方法,则代码块或 ` do ` 语句将变成对这些方法的调用。块内的第一条语句被转换为 ` buildPartialBlock(first:) ` 方法的一个参数,其余语句则变成对 ` buildPartialBlock(accumulated:next:) ` 方法的嵌套调用。例如,以下声明是等效的:
1456
1456
1457
1457
``` swift
1458
1458
struct DrawBoth <First : Drawable , Second : Drawable >: Drawable {
@@ -1706,7 +1706,7 @@ struct ArrayBuilder {
1706
1706
1707
1707
尽管转换行为是通过临时变量来描述的,但使用结果构造器实际上并不会创建任何在代码其他部分可见的新声明。
1708
1708
1709
- 你不能在结果构造器转换的代码中使用 ` break ` 、` continue ` 、` defer ` 、` guard ` 或 ` return ` 语句、` while ` 语句或 ` do ` -` catch ` 语句。
1709
+ 你不能在结果构造器转换的代码中使用 ` break ` 、` continue ` 、` defer ` 、` guard ` 或 ` return ` 语句、` while ` 语句或 ` do ` -` catch ` 语句。
1710
1710
1711
1711
转换过程不会改变代码中的声明,这使得你可以使用临时常量和变量逐步构建表达式。它也不会改变 ` throw ` 语句、编译时诊断语句或包含 ` return ` 语句的闭包。
1712
1712
@@ -1797,7 +1797,7 @@ struct ArrayBuilder {
1797
1797
1798
1798
像 ` public ` 访问级别修饰符一样,这个属性将声明暴露为模块公共接口的一部分。与 ` public ` 不同,编译器不允许在模块外的代码中按名称引用标记为 ` usableFromInline ` 的声明,即使声明的符号已被导出。然而,模块外的代码仍然可以通过使用运行时行为与声明的符号进行交互。
1799
1799
1800
- 标记为 ` inlinable ` 特性的声明可以隐式地从可内联代码中使用。虽然 ` inlinable ` 或 ` usableFromInline ` 都可以应用于 ` internal ` 声明,但同时应用这两个特性是错误的。
1800
+ 标记为 ` inlinable ` 特性的声明可以隐式地从可内联代码中使用。虽然 ` inlinable ` 或 ` usableFromInline ` 都可以应用于 ` internal ` 声明,但同时应用这两个特性是错误的。
1801
1801
1802
1802
<!--
1803
1803
- test: `usableFromInline-and-inlinable-is-redundant`
0 commit comments