APP下载

Swift 4.1释出,扩充泛型加入条件一致性

消息来源:baojiabao.com 作者: 发布时间:2024-05-17

报价宝综合消息Swift 4.1释出,扩充泛型加入条件一致性

Apple宣布正式释出Swift 4.1,这次添加了新的语言功能、建置选项以及一些Swift套件管理器的强化,现在Xcode 9.3 beta也已经支援Swift 4.1,开发者可以先尝鲜试试新功能。

语言本身的功能,其中重要的更新便是泛型的扩充,让Swift的泛型系统有更完整的表达方法。Swift 4.1在标准函式库中加入条件一致性(Conditional Conformance),其所表达的概念为,泛型类型只有在其参数类型符合特定要求时才符合特定协定(Protocol)。

在Swift 4.0中,虽然Array可以使用等号比较运算子==(Equatable),Optional却不行,而等号比较运算子也不支援两个Optional操作数,因此let a = ["1","2","x"].map(Int.init) a == [1,2,nil]这样的写法,会收到编译器的错误警告。

但是现在Swift 4.1,已经可以修正这样的问题,开发者可以让原本无法使用等号比较运算子的型态,透过实作后也能使用。以Optional为例,开发者可以先为Optional实做等号比较运算子,撰写extension Optional: Equatable where Wrapped: Equatable {}程式码,便能让Optional像Array一样使用等号比较运算子。

在Swift 4.1中受惠于条件一致性,Optional、Array和Dictionary只要值与元素符合,就能使用等号比较运算子和哈希表(Hashable)。而这个方法也适用于可编码属性(Codable),现在尝试编码一个无法编码的型态,会得到错误讯息而不会困在Runtime阶段的执行陷阱。

编译器在之前版本支援速度最佳化后,Swift 4.1还支援程式码容量最佳化。新的最佳化选项可以选择对全模组或是单一档案编译最佳化,Apple表示,全模组最佳化的效果较佳,档案大小能减少5%到30%。 另外,套件管理器现在可以正确的解决,来自SSH或是HTTP不同协定套件图(Package Graphs)的相依性问题,并能更快的处理共享相依性。

2019-02-15 20:37:00

相关文章