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

时间:2018-04-04 13:29:11 来源:芜湖网
默认
特大
宋体
黑体
雅黑
楷体
条评论

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

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

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

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

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

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

Copyright © 2012-2019 芜湖网 版权所有 皖ICP备18025966号 关于我们 | 广告服务 | 诚聘英才 | 联系我们 | 滚动新闻 | 免责申明