本文共 1009 字,大约阅读时间需要 3 分钟。
在语言方面,Sequence
协议:drop(while:)
和prefix(while:)
。在特定谓词为True时,可通过丢弃或包含序列初始元素的方式返回所获得的子序列。因此如果有一个序列s
,可通过执行下列命令获取其n-th到m-th子序列:
Swift 3.1还为所有数值类型增加了多个,包括Int
、Float
,以及Double
类型,借此可产生正确的结果,或返回nil
。所谓的可失败构造器(Failable initializer)是为了更好地解决松散类型化数据的转换问题,例如JSON格式所包含的数据。借此所有数值类型获得了一个可以使用exactly
关键字的全新构造器,例如:
init?(exactly value: Int64)\\
根据,可失败的构造器是可抛出异常的构造器的首选做法。
\\虽然官方新闻稿中并未提及,但更新后的文档中,类型扩展现已可包含泛型where
子句:
extension Container where Item == Double {\ func average() -\u0026gt; Double {\ var sum = 0.0\ for index in 0..\\
以前,where
子句只能用作将泛型约束给特定协议,这可能导致仅仅为了指定所需约束而引入ad-hoc协议:
extension Container where Item: MyConstrainProtocol {\...\\
在语言方面还有一个改动需要注意,Swift 3.1对@available
特性进行了扩展,可用于表达,而以前只能按照语言和平台来指定可用性:
@available(swift, introduced: 3.0, obsoleted: 3.1)\class Foo {\ //...\}\\
借此开发者无须使用条件式编译即可判断函数、声明等的候补版本。
\\Swift的Linux实现对现有的各种类进行了改进,包括NSDecimal
、URLSession
、NSArray
、NSData
,同时改进了JSON序列化的性能,并在其他方面有诸多改进。
最后,Swift Package Manager也提供了用户期待已久的很多功能,例如:
\\转载地址:http://rfmdl.baihongyu.com/