From bb4d0c7fcd8fd3818aa1fa2d3f2c34cbf16c26fd Mon Sep 17 00:00:00 2001 From: Zhou Fang Date: Mon, 21 Jun 2021 22:57:01 +0800 Subject: [PATCH 1/4] =?UTF-8?q?eat:=20=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=20(#1140)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/02_language_guide/04_Collection_Types.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/02_language_guide/04_Collection_Types.md b/source/02_language_guide/04_Collection_Types.md index f6a48fc4..25f7cc1a 100755 --- a/source/02_language_guide/04_Collection_Types.md +++ b/source/02_language_guide/04_Collection_Types.md @@ -37,7 +37,7 @@ Swift 中数组的完整写法为 `Array`,其中 `Element` 是这个 你可以使用构造语法来创建一个由特定数据类型构成的空数组: ```swift -var someInts = [Int]() +var someInts: [Int] = [] print("someInts is of type [Int] with \(someInts.count) items.") // 打印“someInts is of type [Int] with 0 items.” ``` @@ -473,7 +473,7 @@ Swift 的字典使用 `Dictionary` 定义,其中 `Key` 是一种 你可以像数组一样使用构造语法创建一个拥有确定类型的空字典: ```swift -var namesOfIntegers = [Int: String]() +var namesOfIntegers: [Int: String] = [:] // namesOfIntegers 是一个空的 [Int: String] 字典 ``` From 59e95dc3a5f80af5d852d42659625f77131a66f8 Mon Sep 17 00:00:00 2001 From: Zhou Fang Date: Mon, 21 Jun 2021 22:57:15 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=20swift=20tour?= =?UTF-8?q?=20=E4=BB=A3=E7=A0=81=E5=8F=98=E6=9B=B4=20(#1138)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/01_welcome_to_swift/03_a_swift_tour.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/01_welcome_to_swift/03_a_swift_tour.md b/source/01_welcome_to_swift/03_a_swift_tour.md index b58eab60..844dd657 100755 --- a/source/01_welcome_to_swift/03_a_swift_tour.md +++ b/source/01_welcome_to_swift/03_a_swift_tour.md @@ -97,8 +97,8 @@ print(shoppingList) 使用初始化语法来创建一个空数组或者空字典。 ```swift -let emptyArray = [String]() -let emptyDictionary = [String: Float]() +let emptyArray: [String] = [] +let emptyDictionary: [String: Float] = [:] ``` 如果类型信息可以被推断出来,你可以用 `[]` 和 `[:]` 来创建空数组和空字典——比如,在给变量赋新值或者给函数传参数的时候。 @@ -187,7 +187,7 @@ let interestingNumbers = [ "Square": [1, 4, 9, 16, 25], ] var largest = 0 -for (kind, numbers) in interestingNumbers { +for (_, numbers) in interestingNumbers { for number in numbers { if number > largest { largest = number @@ -195,11 +195,12 @@ for (kind, numbers) in interestingNumbers { } } print(largest) +// 输出 "25" ``` > 练习 > -> 添加另一个变量来记录最大数字的种类(kind),同时仍然记录这个最大数字的值。 +> 将 _ 替换成变量名,以确定哪种类型的值是最大的。 使用 `while` 来重复运行一段代码直到条件改变。循环条件也可以在结尾,保证能至少循环一次。 @@ -771,7 +772,7 @@ print(fridgeIsOpen) ```swift func makeArray(repeating item: Item, numberOfTimes: Int) -> [Item] { - var result = [Item]() + var result: [Item] = [] for _ in 0.. Date: Mon, 21 Jun 2021 22:59:50 +0800 Subject: [PATCH 3/4] Welcome to Swift - Version Compatibility (#1137) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 更新版本兼容性章节 * fix: 修复语句不顺的问题 --- source/01_welcome_to_swift/02_version_compatibility.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/01_welcome_to_swift/02_version_compatibility.md b/source/01_welcome_to_swift/02_version_compatibility.md index 4dcb9bfd..f0128808 100755 --- a/source/01_welcome_to_swift/02_version_compatibility.md +++ b/source/01_welcome_to_swift/02_version_compatibility.md @@ -1,11 +1,13 @@ # 版本兼容性 -本书描述的是在 Xcode 12 中的默认 Swift 版本 Swift 5.3。你可以使用 Xcode 12 来构建 Swift 5.3、Swift 4.2 或 Swift 4 写的项目。 +本书描述的是在 Xcode 13 中默认包含的 Swift 5.5 版本。你可以使用 Xcode 13 来构建 Swift 5.5、Swift 4.2 或 Swift 4 写的项目。 -当您使用 Xcode 12 构建 Swift 4 和 Swift 4.2 代码时,Swift 5.3 的大多数功能都适用。但以下功能仅支持 Swift 5.3 或更高版本: +使用 Xcode 13 构建 Swift 4 和 Swift 4.2 代码时,Swift 5.5 的大多数功能都适用。但以下功能仅支持 Swift 5.5 或更高版本: * 返回值是不透明类型的函数依赖 Swift 5.1 运行时。 * **try?** 表达式不会为已返回可选类型的代码引入额外的可选类型层级。 * 大数字的整型字面量初始化代码的类型将会被正确推导,例如 **UInt64(0xffff_ffff_ffff_ffff)** 将会被推导为整型类型而非溢出。 -用 Swift 5.3 写的项目可以依赖用 Swift 4.2 或 Swift 4 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以逐个地将框架从 Swift 4 代码迁移到 Swift 5.3。 +并发特性需要 Swift 5.5 及以上版本,以及一个提供了并发相关类型的 Swift 标准库版本。要应用于苹果平台,请至少将部署版本设置为 iOS 15、macOS 12、tvOS 15 或 watchOS 8.0。 + +用 Swift 5.5 写的项目可以依赖用 Swift 4.2 或 Swift 4 写的项目,反之亦然。这意味着,如果你将一个大的项目分解成多个框架(framework),你可以逐个地将框架从 Swift 4 代码迁移到 Swift 5.5。 From 9b302e76cb6a11949fcad586a35067d55ef43b58 Mon Sep 17 00:00:00 2001 From: Zhou Fang Date: Mon, 21 Jun 2021 23:39:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=AF=B9=20for-i?= =?UTF-8?q?n=20=E7=9A=84=E6=8F=8F=E8=BF=B0=20(#1141)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/02_language_guide/05_Control_Flow.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/02_language_guide/05_Control_Flow.md b/source/02_language_guide/05_Control_Flow.md index c3234b2b..823e3f91 100755 --- a/source/02_language_guide/05_Control_Flow.md +++ b/source/02_language_guide/05_Control_Flow.md @@ -97,6 +97,8 @@ for tickMark in stride(from: 3, through: hours, by: hourInterval) { } ``` +以上示例使用 `for-in` 循环来遍历范围、数组、字典和字符串。你可以用它来遍历任何的集合,包括实现了 [Sequence](https://developer.apple.com/documentation/swift/sequence) 协议的自定义类或集合类型。 + ## While 循环 {#while-loops} `while` 循环会一直运行一段语句直到条件变成 `false`。这类循环适合使用在第一次迭代前,迭代次数未知的情况下。Swift 提供两种 `while` 循环形式: