4.1 文档修订历史
19 分钟阅读
原文链接: https://docs.swift.org/latest/documentation/the-swift-programming-language/revisionhistory/
4.1 文档修订历史
回顾本书近期的改动。
2026-07-06
- 更新至 Swift 6.4。
- 全书做了少量更正与补充。
2026-03-23
- 更新至 Swift 6.3。
- 全书做了少量更正与补充。
2025-12-12
- 更新至 Swift 6.2.3。
- 新增 export 一节,介绍如何把定义导出到客户端模块。
2025-11-03
2025-09-15
- 更新至 Swift 6.2。
- 新增内存安全一节,介绍 Swift 帮助你避免的问题。
- 新增模式一节,介绍
if case语法。 - 在并发一章中补充了关于主 actor、隔离和全局 actor 的内容。
- 新增对协议的隐式遵循一节,介绍如何在不显式写出遵循性的情况下遵循常见协议,以及如何抑制隐式遵循。
- 新增隐式约束一节,介绍要求遵循常见协议的泛型约束。
2025-03-31
2024-09-23
- 更新至 Swift 6。
- 新增 preconcurrency 一节,介绍如何迁移到严格并发检查。
- 新增指定错误类型一节,介绍如何抛出特定类型的错误。
- 更新了宏展开表达式一节,因为现在任何宏都可以用作参数的默认值。
- 在访问控制一章中补充了关于包级访问的内容。
2024-03-05
- 更新至 Swift 5.10。
- 在委托一节中补充了关于嵌套协议的内容。
- 在 UIApplicationMain 和 NSApplicationMain 两节中补充了弃用信息。
2023-12-11
- 更新至 Swift 5.9.2。
- 在参数修饰符一节中补充了关于
borrowing和consuming修饰符的内容。 - 在声明常量与变量中补充了关于在声明之后再给常量赋值的内容。
- 在并发一章中补充了关于任务、任务组和任务取消的更多内容。
- 在宏一章中补充了关于在已有 Swift 包中实现宏的内容。
- 更新了 attached 一节,因为扩展宏已经取代了遵循性宏。
- 新增 backDeployed 一节,介绍向后部署。
2023-09-18
- 更新至 Swift 5.9。
- 在控制流一章和条件表达式一节中补充了关于
if和switch表达式的内容。 - 新增宏一章,介绍如何在编译期生成代码。
- 扩展了基础中关于可选类型的讨论。
- 在 Swift 初览中新增了一个并发示例。
- 在不透明类型与装箱协议类型一章中补充了关于装箱协议类型的内容。
- 在结果变换一节中补充了关于
buildPartialBlock(first:)和buildPartialBlock(accumulated:next:)方法的内容。 - 在 available 和条件编译块的平台列表中加入了 visionOS。
- 调整了正式语法的排版,改用空行分组。
2023-03-30
- 更新至 Swift 5.8。
- 新增延迟执行的动作一节,展示错误处理之外的
defer。 - 采用 Swift-DocC 发布。
- 全书做了少量更正与补充。
2022-09-12
- 更新至 Swift 5.7。
- 新增可发送类型一节,介绍如何在 actor 与任务之间发送数据;并在 Sendable 和 unchecked 两节中补充了关于
@Sendable和@unchecked特性的内容。 - 新增正则表达式字面量一节,介绍如何创建正则表达式。
- 在可选绑定一节中补充了
if-let简写形式的内容。 - 在检查 API 可用性一节中补充了关于
#unavailable的内容。
2022-03-14
- 更新至 Swift 5.6。
- 更新了显式成员表达式一节,补充了在链式方法调用及其他后置表达式周围使用
#if的内容。 - 更新了全书插图的视觉样式。
2021-09-20
- 更新至 Swift 5.5。
- 在并发一章,以及 actor 声明、异步函数和方法和 await 运算符几节中,补充了关于异步函数、任务和 actor 的内容。
- 更新了标识符一节,补充了以下划线开头的标识符的内容。
2021-04-26
- 更新至 Swift 5.4。
- 新增结果构建器和 resultBuilder 两节,介绍结果构建器。
- 新增到指针类型的隐式转换一节,介绍在函数调用中输入输出参数如何被隐式转换为不安全指针。
- 更新了可变参数和函数声明两节,因为函数现在可以有多个可变参数。
- 更新了隐式成员表达式一节,因为隐式成员表达式现在可以串联。
2020-09-16
更新至 Swift 5.3。
在用合成实现采纳协议一节中补充了关于枚举的
Comparable合成实现的内容。新增上下文 where 子句一节,因为现在可以在更多位置书写泛型
where子句。新增无主可选引用一节,介绍如何在可选值上使用无主引用。
在 main 一节中补充了关于
@main特性的内容。在字面表达式一节中加入了
#filePath,并更新了关于#file的讨论。更新了逃逸闭包一节,因为闭包现在可以在更多场景中隐式引用
self。更新了用 do-catch 处理错误和 do 语句两节,因为一个
catch子句现在可以匹配多个错误。补充了关于
Any的更多内容,并把它移入新增的 Any 类型一节。更新了属性观察器一节,因为延迟属性现在也可以有观察器。
更新了协议声明一节,因为枚举成员现在可以满足协议要求。
更新了存储变量观察器与属性观察器一节,说明取值器在观察器之前被调用的时机。
更新了内存安全一章,提到了原子操作。
2020-03-24
- 更新至 Swift 5.2。
- 在键路径表达式一节中补充了关于传入键路径而不是闭包的内容。
- 新增具有特殊名称的方法一节,介绍让类、结构体和枚举的实例可以用函数调用语法使用的语法糖。
- 更新了下标选项一节,因为下标现在支持带默认值的参数。
- 更新了 Self 类型一节,因为
Self现在可以在更多上下文中使用。 - 更新了隐式解包可选值一节,更清楚地说明隐式解包可选值既可以当作可选值使用,也可以当作非可选值使用。
2019-09-10
- 更新至 Swift 5.1。
- 在不透明类型与装箱协议类型一章中补充了关于"函数只声明返回值所遵循的协议、而不给出具体具名返回类型"的内容。
- 在属性包装器一节中补充了关于属性包装器的内容。
- 在 frozen 一节中补充了关于为库演进而冻结的枚举与结构体的内容。
- 新增带隐式返回的函数和简写取值器声明两节,介绍省略
return的函数。 - 在类型下标一节中补充了在类型上使用下标的内容。
- 更新了枚举成员模式一节,因为枚举成员模式现在可以匹配可选值。
- 更新了结构体类型的逐成员构造器一节,因为逐成员构造器现在支持对带默认值的属性省略参数。
- 在 dynamicMemberLookup 一节中补充了关于在运行时按键路径查找动态成员的内容。
- 在条件编译块的目标环境列表中加入
macCatalyst。 - 更新了 Self 类型一节,因为
Self现在可以用来指向当前类、结构体或枚举声明所引入的类型。
2019-03-25
- 更新至 Swift 5.0。
- 新增扩展字符串定界符一节,并更新了字符串字面量一节,补充扩展字符串定界符的内容。
- 新增 dynamicCallable 一节,介绍如何用
dynamicCallable特性把实例当函数动态调用。 - 新增 unknown 和对未来的枚举成员做 switch两节,介绍如何用
unknownswitch case 特性在 switch 语句中处理未来的枚举成员。 - 在键路径表达式一节中补充了关于恒等键路径(
\.self)的内容。 - 在条件编译块一节中补充了在平台条件中使用小于(
<)运算符的内容。
2018-09-17
- 更新至 Swift 4.2。
- 在遍历枚举成员一节中补充了访问枚举全部成员的内容。
- 在编译期诊断语句一节中补充了关于
#error和#warning的内容。 - 在声明特性一节的
inlinable和usableFromInline特性下补充了关于内联的内容。 - 在声明特性一节的
dynamicMemberLookup特性下补充了关于在运行时按名字查找成员的内容。 - 在声明特性一节中补充了关于
requires_stored_property_inits和warn_unqualified_access特性的内容。 - 在条件编译块一节中补充了如何根据所用的 Swift 编译器版本做条件编译的内容。
- 在字面表达式一节中补充了关于
#dsohandle的内容。
2018-03-29
- 更新至 Swift 4.1。
- 在等价运算符一节中补充了关于等价运算符合成实现的内容。
- 在声明一章的扩展声明一节,以及协议一章的有条件地遵循协议一节中,补充了关于条件协议遵循性的内容。
- 在在关联类型约束中使用协议一节中补充了关于递归协议约束的内容。
- 在条件编译块中补充了关于
canImport()和targetEnvironment()平台条件的内容。
2017-12-04
- 更新至 Swift 4.0.3。
- 更新了键路径表达式一节,因为键路径现在支持下标组成部分。
2017-09-19
- 更新至 Swift 4.0。
- 在内存安全一章中补充了关于内存独占访问的内容。
- 新增带泛型 where 子句的关联类型一节,因为现在可以用泛型
where子句约束关联类型。 - 在字符串与字符一章的字符串字面量一节,以及词法结构一章的字符串字面量一节中,补充了关于多行字符串字面量的内容。
- 更新了声明特性中关于
objc特性的讨论,因为现在推断该特性的场景变少了。 - 新增泛型下标一节,因为下标现在可以是泛型的。
- 更新了协议一章的协议组合一节,以及类型一章的协议组合类型一节中的讨论,因为协议组合类型现在可以包含父类要求。
- 更新了扩展声明中关于协议扩展的讨论,因为其中不再允许
final。 - 在断言与前提条件一节中补充了关于前提条件和致命错误的内容。
2017-03-27
- 更新至 Swift 3.1。
- 新增带泛型 where 子句的扩展一节,介绍带要求的扩展。
- 在 for-in 循环一节中补充了遍历范围的示例。
- 在可失败构造器一节中补充了可失败数值转换的示例。
- 在声明特性一节中补充了把
available特性与 Swift 语言版本一起使用的内容。 - 更新了函数类型一节中的讨论,指出书写函数类型时不允许使用实参标签。
- 更新了条件编译块一节中关于 Swift 语言版本号的讨论,因为现在允许包含可选的补丁版本号。
- 更新了函数类型一节中的讨论,因为 Swift 现在区分"接受多个参数的函数"和"接受单个元组类型参数的函数"。
- 从表达式一章中移除了动态类型表达式一节,因为
type(of:)现在是 Swift 标准库函数。
2016-10-27
- 更新至 Swift 3.0.1。
- 更新了自动引用计数一章中关于弱引用和无主引用的讨论。
- 在声明修饰符一节中补充了关于
unowned、unowned(safe)和unowned(unsafe)声明修饰符的内容。 - 在 Any 与 AnyObject 的类型转换一节中补充了一条注记,说明在期望
Any类型值的地方使用可选值的情况。 - 更新了表达式一章,把括号表达式与元组表达式的讨论分开。
2016-09-13
- 更新至 Swift 3.0。
- 更新了函数一章和函数声明一节中关于函数的讨论,指出所有参数默认都会有实参标签。
- 更新了高级运算符一章中关于运算符的讨论,因为现在以类型方法而非全局函数的形式实现它们。
- 在访问控制一章中补充了关于
open和fileprivate访问级别修饰符的内容。 - 更新了函数声明一节中关于
inout的讨论,指出它写在参数类型之前而不是参数名之前。 - 更新了逃逸闭包、自动闭包两节以及属性特性一章中关于
@noescape和@autoclosure特性的讨论,因为它们现在是类型特性而不是声明特性。 - 在高级运算符一章的自定义中置运算符的优先级一节,以及声明一章的优先级组声明一节中,补充了关于运算符优先级组的内容。
- 全书改用 macOS 而不是 OS X、用
Error而不是ErrorProtocol,并把StringLiteralConvertible之类的协议名改为ExpressibleByStringLiteral。 - 更新了泛型一章的泛型 where 子句一节,以及泛型形参与实参一章中的讨论,因为泛型
where子句现在写在声明末尾。 - 更新了逃逸闭包一节中的讨论,因为闭包现在默认是非逃逸的。
- 更新了基础一章的可选绑定一节,以及语句一章的 while 语句一节中的讨论,因为
if、while和guard语句现在使用逗号分隔的条件列表,而不再使用where子句。 - 在控制流一章的 switch一节,以及语句一章的 switch 语句一节中,补充了关于带多个模式的 switch 分支的内容。
- 更新了函数类型一节中关于函数类型的讨论,因为函数实参标签已不再是函数类型的一部分。
- 更新了协议一章的协议组合一节,以及类型一章的协议组合类型一节中关于协议组合类型的讨论,改用新的
Protocol1 & Protocol2语法。 - 更新了动态类型表达式一节中的讨论,改用新的
type(of:)语法书写动态类型表达式。 - 更新了行控制语句的讨论,在行控制语句一节中改用
#sourceLocation(file:line:)语法。 - 更新了永不返回的函数中的讨论,改用新的
Never类型。 - 在字面表达式一节中补充了关于 playground 字面量的内容。
- 更新了输入输出参数一节中的讨论,指出只有非逃逸闭包才能捕获输入输出参数。
- 更新了默认参数值一节中关于默认参数的讨论,因为它们在函数调用中不再能重排顺序。
- 在属性特性一章中把特性实参改用冒号书写。
- 在重新抛出错误的函数和方法一节中补充了在重新抛出函数的 catch 块中抛出错误的内容。
- 在选择器表达式一节中补充了访问 Objective-C 属性取值器或设值器选择器的内容。
- 在类型别名声明一节中补充了关于泛型类型别名以及在协议内部使用类型别名的内容。
- 更新了函数类型一节中关于函数类型的讨论,指出参数类型外必须加圆括号。
- 更新了属性特性一章,指出
@IBAction、@IBOutlet和@NSManaged特性隐含@objc特性。 - 在声明特性一节中补充了关于
@GKInspectable特性的内容。 - 更新了可选协议要求一节中关于可选协议要求的讨论,澄清它们只用于与 Objective-C 互操作的代码。
- 从函数声明一节中移除了关于在函数参数中显式使用
let的讨论。 - 从语句一章中移除了关于
Boolean协议的讨论,因为该协议已从 Swift 标准库中移除。 - 更正了声明特性一节中关于
@NSApplicationMain特性的讨论。
2016-03-21
- 更新至 Swift 2.2。
- 在条件编译块一节中补充了如何根据所用的 Swift 版本做条件编译的内容。
- 在显式成员表达式一节中补充了如何区分"仅实参名不同"的方法或构造器的内容。
- 在选择器表达式一节中补充了关于 Objective-C 选择器的
#selector语法的内容。 - 更新了关联类型和协议关联类型声明两节中关于关联类型的讨论,改用
associatedtype关键字。 - 更新了可失败构造器一节中关于"在实例完全初始化之前返回
nil的构造器"的内容。 - 在比较运算符一节中补充了关于比较元组的内容。
- 在关键字与标点一节中补充了把关键字用作外部参数名的内容。
- 更新了声明特性一节中关于
@objc特性的讨论,指出枚举和枚举成员也可以使用该特性。 - 更新了运算符一节,加入了关于含点号的自定义运算符的讨论。
- 在重新抛出错误的函数和方法一节中补充了一条注记,说明重新抛出函数不能直接抛出错误。
- 在属性观察器一节中补充了一条注记,说明把属性作为输入输出参数传入时属性观察器会被调用。
- 在 Swift 初览一章中新增了关于错误处理的一节。
- 更新了弱引用一节的插图,更清楚地展示释放过程。
- 移除了关于 C 风格
for循环、++前置和后置运算符,以及--前置和后置运算符的讨论。 - 移除了关于可变函数实参和柯里化函数特殊语法的讨论。
2015-10-20
- 更新至 Swift 2.1。
- 更新了字符串插值和字符串字面量两节,因为字符串插值中现在可以包含字符串字面量。
- 新增逃逸闭包一节,介绍
@noescape特性。 - 更新了声明特性和条件编译块两节,加入了关于 tvOS 的内容。
- 在输入输出参数一节中补充了输入输出参数的行为。
- 在捕获列表一节中补充了闭包捕获列表中指定的值如何被捕获。
- 更新了通过可选链访问属性一节,澄清通过可选链赋值的行为。
- 改进了自动闭包一节中关于自动闭包的讨论。
- 在 Swift 初览一章中新增了一个使用
??运算符的示例。
2015-09-16
- 更新至 Swift 2.0。
- 在错误处理一章,以及 do 语句、throw 语句、defer 语句和 try 运算符几节中补充了关于错误处理的内容。
- 更新了表示与抛出错误一节,因为现在所有类型都可以遵循
ErrorType协议。 - 在把错误转换为可选值一节中补充了关于新
try?关键字的内容。 - 在枚举一章的递归枚举一节,以及声明一章的成员可为任意类型的枚举一节中,补充了关于递归枚举的内容。
- 在控制流一章的检查 API 可用性一节,以及语句一章的可用性条件一节中,补充了关于 API 可用性检查的内容。
- 在控制流一章的提前退出一节,以及语句一章的 guard 语句一节中,补充了关于新
guard语句的内容。 - 在协议一章的协议扩展一节中补充了关于协议扩展的内容。
- 在访问控制一章的单元测试目标的访问级别一节中补充了关于单元测试访问控制的内容。
- 在模式一章的可选模式一节中补充了关于新的可选模式的内容。
- 更新了 repeat-while一节,加入了关于
repeat-while循环的内容。 - 更新了字符串与字符一章,因为
String不再遵循 Swift 标准库中的CollectionType协议。 - 在打印常量与变量一节中补充了关于新的 Swift 标准库函数
print(_:separator:terminator)的内容。 - 在枚举一章的隐式分配的原始值一节,以及声明一章的成员为原始值类型的枚举一节中,补充了原始值为
String的枚举成员的行为。 - 在自动闭包一节中补充了关于
@autoclosure特性——包括其@autoclosure(escaping)形式——的内容。 - 更新了声明特性一节,加入了关于
@available和@warn_unused_result特性的内容。 - 更新了类型特性一节,加入了关于
@convention特性的内容。 - 在可选绑定一节中新增了一个把多个可选绑定与
where子句一起使用的示例。 - 在字符串字面量一节中补充了用
+运算符拼接字符串字面量发生在编译期的内容。 - 在元类型一节中补充了比较元类型值以及用构造器表达式从它们构造实例的内容。
- 在用断言调试一节中补充了一条注记,说明用户自定义断言何时会被禁用。
- 更新了声明特性一节中关于
@NSManaged特性的讨论,因为该特性现在可以应用于某些实例方法。 - 更新了可变参数一节,因为可变参数现在可以声明在函数参数列表的任意位置。
- 在覆盖可失败构造器一节中补充了"非可失败构造器如何通过强制解包父类构造器的结果向上委托到可失败构造器"的内容。
- 在成员可为任意类型的枚举一节中补充了把枚举成员当作函数使用的内容。
- 在构造器表达式一节中补充了显式引用构造器的内容。
- 在编译器控制语句一节中补充了关于构建配置和行控制语句的内容。
- 在元类型一节中补充了一条注记,说明如何从元类型值构造类实例。
- 在弱引用一节中补充了一条注记,说明弱引用不适合用于缓存。
- 更新了类型属性一节中的注记,提到存储类型属性是延迟初始化的。
- 更新了捕获值一节,澄清变量和常量在闭包中如何被捕获。
- 更新了声明特性一节,说明何时可以把
@objc特性应用于类。 - 在处理错误一节中补充了一条注记,说明执行
throw语句的性能;并在 do 语句一节中补充了关于do语句的类似内容。 - 更新了类型属性一节,加入了类、结构体和枚举的存储类型属性与计算类型属性的内容。
- 更新了break 语句一节,加入了带标签的 break 语句的内容。
- 更新了属性观察器一节中的注记,澄清
willSet和didSet观察器的行为。 - 在访问级别一节中补充了一条注记,说明
private访问的作用域。 - 在弱引用一节中补充了一条注记,说明垃圾回收系统与 ARC 在弱引用上的差异。
- 更新了字符串字面量中的特殊字符一节,给出了更精确的 Unicode 标量定义。
2015-04-08
- 更新至 Swift 1.2。
- Swift 现在有了原生的
Set集合类型。更多内容参见集合。 @autoclosure现在是参数声明的特性,而不再是参数类型的特性;同时还新增了@noescape参数声明特性。更多内容参见声明特性。- 类型方法和类型属性现在用
static关键字作为声明修饰符。更多内容参见类型变量属性。 - Swift 现在包含
as?和as!可失败向下转换运算符。更多内容参见检查协议遵循性。 - 新增了关于字符串下标的一节指南内容。
- 从溢出运算符中移除了溢出除法(
&/)和溢出求余(&%)运算符。 - 更新了常量与常量属性声明和初始化的规则。更多内容参见常量声明。
- 更新了字符串字面量中 Unicode 标量的定义。参见字符串字面量中的特殊字符。
- 更新了范围运算符,指出上下界相同的半开区间将是空区间。
- 更新了闭包是引用类型,澄清变量的捕获规则。
- 更新了数值溢出,澄清有符号和无符号整数的溢出行为。
- 更新了协议声明,澄清协议声明的作用域与成员。
- 更新了定义捕获列表,澄清闭包捕获列表中弱引用和无主引用的语法。
- 更新了运算符,明确列出可用于自定义运算符的字符示例,例如来自 Mathematical Operators、Miscellaneous Symbols 和 Dingbats Unicode 块的字符。
- 常量现在可以在局部函数作用域中声明而不初始化,但必须在第一次使用之前赋值。更多内容参见常量声明。
- 在构造器中,常量属性现在只能赋值一次。更多内容参见在初始化期间给常量属性赋值。
- 同一个
if语句中现在可以出现多个可选绑定,以逗号分隔的赋值表达式列表形式书写。更多内容参见可选绑定。 - 可选链表达式必须出现在后置表达式之中。
- 协议转换不再局限于
@objc协议。 - 可能在运行时失败的转换现在使用
as?或as!运算符,而保证不会失败的转换使用as运算符。更多内容参见类型转换运算符。
2014-10-16
- 更新至 Swift 1.1。
- 新增了一份关于可失败构造器的完整指南。
- 新增了对协议可失败构造器要求的说明。
Any类型的常量与变量现在可以存放函数实例。更新了 Any 与 AnyObject 的类型转换中的示例,展示如何在switch语句中检查并转换到函数类型。- 带原始值的枚举现在有
rawValue属性(而不是toRaw()方法),以及带rawValue参数的可失败构造器(而不是fromRaw()方法)。更多内容参见原始值和成员为原始值类型的枚举。 - 新增了关于可失败构造器的参考章节,说明它可以触发初始化失败。
- 自定义运算符现在可以包含
?字符。更新了运算符参考资料以描述修订后的规则,并从自定义运算符中移除了关于合法运算符字符集合的重复说明。
2014-08-18
- 新文档,描述 Swift 1.0——Apple 用于构建 iOS 和 OS X 应用的新编程语言。
- 新增了协议中构造器要求的一节。
- 新增了类专用协议的一节。
- 断言与前提条件现在可以使用字符串插值。移除了与之相反的注记。
- 更新了拼接字符串与字符一节,以反映
String与Character值不能再与加法运算符(+)或加法赋值运算符(+=)组合使用这一事实:这些运算符现在只用于String值;要把单个Character值追加到字符串末尾,请使用String类型的append(_:)方法。 - 在声明特性一节中补充了关于
availability特性的内容。 - 可选类型不再在"有值"时隐式求值为
true、“无值"时求值为false,以避免在处理可选Bool值时产生混淆。若要判断可选值是否包含值,请改用==或!=运算符显式地与nil比较。 - Swift 现在有了空合运算符(
a ?? b):如果可选值有值就解包该值,否则返回默认值。 - 更新并扩展了比较字符串一节,以反映并演示字符串与字符比较、前缀/后缀比较现在基于扩展字形簇的 Unicode 规范等价性。
- 现在可以通过可选链尝试设置属性值、给下标赋值,或者调用可变方法或运算符。关于通过可选链访问属性的内容也相应更新,且通过可选链调用方法中检查方法调用成功的示例已扩展,展示如何检查属性设置是否成功。
- 新增了关于通过可选链访问可选类型的下标的一节。
- 更新了访问和修改数组一节,指出不能再使用
+=运算符向数组追加单个元素:请改用append(_:)方法,或者用+=运算符追加一个只含单个元素的数组。 - 补充了一条注记,说明范围运算符
a...b和a..<b的起始值a不能大于结束值b。 - 重写了继承一章,移除了其中关于构造器覆盖的入门性内容。该章现在更侧重于子类中新增功能的添加,以及通过覆盖修改既有功能。该章的覆盖属性的取值器与设值器示例已重写,展示如何覆盖
description属性。(在子类构造器中修改继承属性默认值的示例已移到初始化一章。) - 更新了构造器的继承与覆盖一节,指出对指定构造器的覆盖现在必须用
override修饰符标记。 - 更新了必需构造器一节,指出
required修饰符现在要写在子类的每一个必需构造器实现之前,而且必需构造器的要求现在可以由自动继承的构造器满足。 - 中置运算符方法不再需要
@infix特性。 - 前置和后置运算符的
@prefix和@postfix特性已被prefix和postfix声明修饰符取代。 - 补充了一条注记,说明对同一个操作数同时应用前置和后置运算符时的应用顺序。
- 复合赋值运算符的运算符函数在定义时不再使用
@assignment特性。 - 定义自定义运算符时指定修饰符的顺序发生了变化:现在写
prefix operator而不是operator prefix,以此类推。 - 在声明修饰符中补充了关于
dynamic声明修饰符的内容。 - 补充了类型推断如何与字面量配合工作的内容。
- 补充了关于柯里化函数的更多内容。
- 新增了关于访问控制的一章。
- 更新了字符串与字符一章,以反映 Swift 的
Character类型现在表示单个 Unicode 扩展字形簇这一事实,其中包括新增的扩展字形簇一节,以及关于 Unicode 标量值和比较字符串的更多内容。 - 更新了字符串字面量一节,指出字符串字面量中的 Unicode 标量现在写作
\u{n},其中n是 0 到 10FFFF(Unicode 码空间范围)之间的十六进制数。 NSString的length属性现在映射到 Swift 原生String类型上的utf16Count,而不是utf16count。- Swift 的原生
String类型不再有uppercaseString或lowercaseString属性。字符串与字符中相应的小节已被移除,多处代码示例也已更新。 - 新增了无实参标签的构造器参数一节。
- 新增了必需构造器一节。
- 新增了可选元组返回类型一节。
- 更新了类型标注一节,指出可以在同一行用一次类型标注定义多个相关变量。
@optional、@lazy、@final和@required特性现在改成了optional、lazy、final和required声明修饰符。- 全书改用半开区间运算符来称呼
..<(而不再称"半闭区间运算符”)。 - 更新了访问和修改字典一节,指出
Dictionary现在有布尔属性isEmpty。 - 更清楚地列出了定义自定义运算符时可以使用的全部字符。
nil以及布尔值true和false现在属于字面量。- Swift 的
Array类型现在具有完整的值语义。更新了集合的可变性和数组中的内容以反映这一新做法,并澄清了字符串、数组和字典的赋值与复制行为。 - 数组类型简写语法现在写作
[SomeType]而不是SomeType[]。 - 新增了关于字典类型简写语法的一节,它写作
[KeyType: ValueType]。 - 新增了关于集合类型的哈希值的一节。
- 闭包表达式的示例现在改用全局
sorted(_:_:)函数,而不是全局sort(_:_:)函数,以反映新的数组值语义。 - 更新了结构体类型的逐成员构造器的内容,澄清即使结构体的存储属性没有默认值,逐成员构造器也依然可用。
- 更新为使用
..<而不是..来表示半开区间运算符。 - 新增了一个扩展泛型类型的示例。