diff --git a/source/01_welcome_to_swift/02_version_compatibility.md b/source/01_welcome_to_swift/02_version_compatibility.md index 2e063b9e..2111b44e 100755 --- a/source/01_welcome_to_swift/02_version_compatibility.md +++ b/source/01_welcome_to_swift/02_version_compatibility.md @@ -1,11 +1,11 @@ # 版本兼容性 -本书描述的是在 Xcode 11 中的默认 Swift 版本 Swift 5.1。你可以使用 Xcode11 来构建 Swift 5.1、Swift 4.2 或 Swift 4 写的项目。 +本书描述的是在 Xcode 11.4 中的默认 Swift 版本 Swift 5.2。你可以使用 Xcode11.4 来构建 Swift 5.1、Swift 4.2 或 Swift 4 写的项目。 -当您使用 Xcode 11 构建 Swift 4 和 Swift 4.2 代码时,Swift 5.1 的大多数功能都适用。但以下功能仅支持 Swift 5.1 或更高版本: +当您使用 Xcode 11.4 构建 Swift 4 和 Swift 4.2 代码时,Swift 5.2 的大多数功能都适用。但以下功能仅支持 Swift 5.2 或更高版本: * 返回值是不透明类型的函数依赖 Swift 5.1 运行时。 * **try?** 表达式不会为已返回可选类型的代码引入额外的可选类型层级。 * 大数字的整型字面量初始化代码的类型将会被正确推导,例如 **UInt64(0xffff_ffff_ffff_ffff)** 将会被推导为整型类型而非溢出。 -用 Swift 5.1 写的项目可以依赖用 Swift 4.2 或 Swift 4 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以逐个地将框架从 Swift 4 代码迁移到 Swift 5.1。 +用 Swift 5.2 写的项目可以依赖用 Swift 4.2 或 Swift 4 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以逐个地将框架从 Swift 4 代码迁移到 Swift 5.2。 diff --git a/source/02_language_guide/10_Properties.md b/source/02_language_guide/10_Properties.md index 2a749c7a..af1af508 100755 --- a/source/02_language_guide/10_Properties.md +++ b/source/02_language_guide/10_Properties.md @@ -289,7 +289,8 @@ stepCounter.totalSteps = 896 ```swift @propertyWrapper struct TwelveOrLess { - private var number = 0 + private var number: Int + init() { self.number = 0 } var wrappedValue: Int { get { return number } set { number = min(newValue, 12) } @@ -456,8 +457,12 @@ print(mixedRectangle.height) ```swift @propertyWrapper struct SmallNumber { - private var number = 0 - var projectedValue = false + private var number: Int + var projectedValue: Bool + init() { + self.number = 0 + self.projectedValue = false + } var wrappedValue: Int { get { return number } set { @@ -485,7 +490,7 @@ print(someStructure.$someNumber) // 打印 "true" ``` -写下 `s.$someNumber` 即可访问包装器的被呈现值。在存储一个比较小的数值时,如 4 ,`s.$someNumber` 的值为 `false`。但是,在尝试存储一个较大的数值时,如 55 ,被呈现值变为 `true`。 +写下 `someStructure.$someNumber` 即可访问包装器的被呈现值。在存储一个比较小的数值时,如 4 ,`someStructure.$someNumber` 的值为 `false`。但是,在尝试存储一个较大的数值时,如 55 ,被呈现值变为 `true`。 属性包装器可以返回任何类型的值作为它的被呈现值。在这个例子里,属性包装器要暴露的信息是:那个数值是否被调整过,所以它暴露出布尔型值来作为它的被呈现值。需要暴露出更多信息的包装器可以返回其他数据类型的实例,或者可以返回自身来暴露出包装器的实例,并把其作为它的被呈现值。 diff --git a/source/03_language_reference/05_Statements.md b/source/03_language_reference/05_Statements.md index 5273b1a1..eba39267 100755 --- a/source/03_language_reference/05_Statements.md +++ b/source/03_language_reference/05_Statements.md @@ -782,8 +782,7 @@ statements to compile if both compilation conditions are false #### grammar-environment {#grammar-environment} -> *环境* → **模拟器** -> +> *环境* → **模拟器** | **macCatalyst** ### 行控制语句 {#line-control-statements} 行控制语句可以为被编译的源代码指定行号和文件名,从而改变源代码的定位信息,以便进行分析和调试。 diff --git a/source/03_language_reference/10_Summary_of_the_Grammar.md b/source/03_language_reference/10_Summary_of_the_Grammar.md index c4dbe9d9..7bfc4f94 100755 --- a/source/03_language_reference/10_Summary_of_the_Grammar.md +++ b/source/03_language_reference/10_Summary_of_the_Grammar.md @@ -1046,7 +1046,7 @@ > > *模块名* → [标识符](./02_Lexical_Structure.md#identifier) > -> *环境* → **simulator** +> *环境* → **模拟器** | **macCatalyst** >