Swift 3.1改进了语言、包管理器和Linux实现

Swift3.1引入了Sequence协议的新成员drop(while:)和prefix(while:),并为所有数值类型增加了可失败构造器。此外,类型扩展支持泛型where子句,@available特性得以增强以支持Swift版本的可用性声明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在语言方面,Sequence协议新增了两个成员drop(while:)prefix(while:)。在特定谓词为True时,可通过丢弃或包含序列初始元素的方式返回所获得的子序列。因此如果有一个序列s,可通过执行下列命令获取其n-th到m-th子序列:

let subseq = s.prefix(while: {$0 \\

Swift 3.1还为所有数值类型增加了多个转换构造器(Conversion initializer),包括IntFloat,以及Double类型,借此可产生正确的结果,或返回nil。所谓的可失败构造器(Failable initializer)是为了更好地解决松散类型化数据的转换问题,例如JSON格式所包含的数据。借此所有数值类型获得了一个可以使用exactly关键字的全新构造器,例如:

\\
init?(exactly value: Int64)
\\

根据社区反馈,可失败的构造器是可抛出异常的构造器的首选做法。

\\

虽然官方新闻稿中并未提及,但更新后的Apple Swift 3.1指南文档中提到,类型扩展现已可包含泛型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特性进行了扩展,可用于表达按照Swift不同版本指定的可用性,而以前只能按照语言和平台来指定可用性:

\\
@available(swift, introduced: 3.0, obsoleted: 3.1)\class Foo {\  //...\}
\\

借此开发者无须使用条件式编译即可判断函数、声明等的候补版本。

\\

Swift的Linux实现对现有的各种类进行了改进,包括NSDecimalURLSessionNSArrayNSData,同时改进了JSON序列化的性能,并在其他方面有诸多改进。

\\

最后,Swift Package Manager也提供了用户期待已久的很多功能,例如:

\\
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值