Swift 最新的主要版本提供了针对语言本身以及标准库的大量改动和更新,最重要的变化包括新增的 String 功能、扩展集合、归档和序列化等。 Swift 4 中,String 已全面遵循 Collection 协议,因此可直接迭代并提供了集合与序列类似的全部条件,例如:
此外 String 切片现已成为下标(Substring)类型的实例,遵循 StringProtocol,可按照与 String 类型完全一致的方式使用。这一改动有助于改善切片性能,因为 Substring 已经不再需要复制 String 切片。复制操作可延迟至 Substring 转换为 String 并被某些 API 使用的时候进行。 String 的其他功能还包括:支持 Unicode 9 以及多行 Literal。 Swift 4 还改进了用户创建、使用和管理集合类型的方式,例如 Dictionary 和 Set。 首先,用户现在已经可以通过元祖(Tuple)序列创建字典,并指定如果遇到重复内容后的处理方式,而这一操作可在创建字典或合并两个字典的过程中进行:
Dictionary 和 Set 现在可以筛选成为原始类型的另一个对象,而不再筛选为 Array。此外字典也已经可以支持新的 mapValues 方法:
关于字典还有一个实用的改进:在访问其元素时可以指定默认值,这样便可让下标运算符返回 Non-opt 类型:
Swift 4 中所有 Collection 类型均支持泛型下标(Generic subscript)。这意味着我们可以定义下列 JSON 结构,不将索引的结果抛给字典:
对于该语言还有一个广受好评的改进:对归档和序列化的支持,以前这需要通过 NSObject 和 NSCoding 处理,无法用于 struct 和 enum 类型。但 Swift 4 通过 Codable 协议增加了对所有类型的序列化支持。Ole Begemann 对 Swift 4 的编码和解码提供了入门简介。例如我们可以这样定义一个 Codable 类型:
最后,Swift 4 提供了两种语言模式,可通过 -swift-version 编译器选项进行选择。在 Swift 3.2 模式中,编译器可接受大部分使用 Swift 3.x 编译器编译的源代码。在该模式下,大部分 Swift 4 语言功能均可用,但针对之前已有 API 的各种更新均不可用。在 Swift 4.0 模式中,我们可以使用 Swift 4 的全部功能,但可能需要改动部分源代码,这一过程通常可通过 Xcode 的迁移助理实现。 Swift 4 还有很多改进,建议阅读 Swift 维护者 Ted Kremenek 的公告,并通过 Ole Begemann 在交互式 Playground 中提供的所有新功能演示来体验。 Swift 4 已包含在 Xcode 9 中,并可手工安装到 Xcode 8.3 中使用。 |
来源:即时通讯网 - 即时通讯开发者社区! |