swift4 linux,Swift 4正式发布,新功能概览
Swift最新的主要版本提供了针对语言本身以及标准库的大量改动和更新,最重要的变化包括新增的String功能、扩展集合、归档和序列化等。
Swift 4中,String已全面遵循Collection协议,因此可直接迭代并提供了集合与序列类似的全部条件,例如:
for c in myString {
print(c)
}
myString.filter { c in
return boolCheck(c)
}
let l = myString.count
let myString2 = myString.dropFirst()
此外String切片现已成为下标(Substring)类型的实例,遵循StringProtocol,可按照与String类型完全一致的方式使用。这一改动有助于改善切片性能,因为Substring已经不再需要复制String切片。复制操作可延迟至Substring转换为String并被某些API使用的时候进行。
String的其他功能还包括:支持Unicode 9以及多行Literal。
Swift 4还改进了用户创建、使用和管理集合类型的方式,例如Dictionary和Set。
首先,用户现在已经可以通过元祖(Tuple)序列创建字典,并指定如果遇到重复内容后的处理方式,而这一操作可在创建字典或合并两个字典的过程中进行:
let items = ["ItemA", "ItemB", "ItemC", "ItemA"]
let prices = [14.40, 41.63, 3.71, 15.63]
let catalog1 = Dictionary(uniqueKeysWithValues: zip(items, prices))
let catalog2 = Dictionary(prices, uniquingKeysWith: { (l, r) in
l })
let catalog3 = Dictionary(prices, uniquingKeysWith: { (l, r) in
l + r })
let merged = catalog.merge(catalog3) { (l, r) in r }
Dictionary和Set现在可以筛选成为原始类型的另一个对象,而不再筛选为Array。此外字典也已经可以支持新的mapValues方法:
let catalog4 = catalog.filter { $0.value < 15.0 }
let catalog5 = catalog.mapValues { $0 * 1.2 }
关于字典还有一个实用的改进:在访问其元素时可以指定默认值,这样便可让下标运算符返回Non-opt类型:
let price1 : Float = catalog['none', default: 0.0]
let price2 : Float? = catalog['none']
Swift 4中所有Collection类型均支持泛型下标(Generic subscript)。这意味着我们可以定义下列JSON结构,不将索引的结果抛给字典:
struct JSON {
init(dictionary: [String:Any]) {
...
}
subscript(key: String) -> T? {
...
}
}
let json = ...
let result: String? = json['item']
对于该语言还有一个广受好评的改进:对归档和序列化的支持,以前这需要通过NSObject和NSCoding处理,无法用于struct和enum类型。但Swift 4通过Codable协议增加了对所有类型的序列化支持。Ole Begemann对Swift 4的编码和解码提供了入门简介。例如我们可以这样定义一个Codable类型:
struct Card: Codable, Equatable {
enum Suit: String, Codable {
case clubs, spades, hearts, diamonds
}
enum Rank: Int, Codable {
case two = 2, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace
}
var suit: Suit
var rank: Rank
static func ==(lhs: Card, rhs: Card) -> Bool {
return lhs.suit == rhs.suit && lhs.rank == rhs.rank
}
}
let hand = [Card(suit: .clubs, rank: .ace), Card(suit: .hearts, rank: .queen)]
最后,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中使用。
swift4 linux,Swift 4正式发布,新功能概览相关推荐
- kail linux稳定版本,Kali Linux 2020.3 稳定版已发布 更新后新功能概览
Kali Linux 2020.3稳定版已发布,新版带来了许多令人印象深刻的更新,例如引入 zsh,并宣布从 bash 切换至 zsh 的计划(目前仍然默认使用 bash,2020.4 将默认使用 z ...
- linux mate主题目录,Linux Mint 19.1新功能介绍,包含Cinnamon、Xfce、MATE桌面
Linux Mint 19.1(开发代号Tessa)是一个LTS长期支持版本,基于Ubuntu 18.04,采用Linux kernel 4.15内核,它附带了很多更新的软件,并带来了改进和许多新功能 ...
- Windows Server 2008 R2之新功能概览
1.仅支持64位 R2 只能安装在64位硬件,不能在32位上.它支持多达256个核心. 2.AD管理中心 它取代了AD.域和信任.站点和服务,以及用户和计算机管理工具.它是建立在PowerSell之上 ...
- Win11正式发布新功能
2014年,微软发布了win10系统,后来微软号称win10将是最后一版系统,以后不会再有win11什么的玩意儿,但是,今年微软还是发布了win11. 科技界的大佬说话,永远不要相信,小米还说自己不会 ...
- red flag linux是应用软件吗,RedFlag Desktop Linux 10(红旗Linux 10)的新功能/特性介绍...
本文将向你介绍RedFlag Desktop Linux 10(红旗Linux 10)的新功能及新特性,让你对RedFlag的桌面版创新有一个了解,以下介绍6点和其他Linux发行版有着与众不同的地方 ...
- Swift 4正式发布,新功能概览
Swift最新的主要版本提供了针对语言本身以及标准库的大量改动和更新,最重要的变化包括新增的String功能.扩展集合.归档和序列化等. \\ Swift 4中,String已全面遵循Collecti ...
- 针对边缘计算,红帽企业Linux 9有哪些新功能?
每一次发布红帽企业Linux(RHEL)都激动人心,每一个(大的)新版本为业界提供十年以上的技术底座.RHEL 9标志着下一个里程碑,在稳定性.性能.升级和安全能力等领域提供全面改进.由于边缘计算是我 ...
- Node 10 新功能概览(译)
以代号"Dubnium"为代表的Node 10于2018年4月24日发布,并将于2018年10月进入长期支持(LTS).JavaScript开发人员一直在激动地等待今天,今天我们来 ...
- Linux Kernel 3.0新特性概览(转)
上周五,Linus Torvalds终于发布了备受瞩目的新一代Linux操作系统内核.Linux Kernel 3.0经过了七个RC候选版才推出正式版本,上一个版本是5月19日的2.6.39,也是2. ...
最新文章
- 《C语言及程序设计》程序阅读——文件操作
- 【HDU 1711】Number Sequence(裸KMP算法)
- 二叉树的递归遍历与复制
- php 前置匹配,浅析PHP正则表达式匹配的特定实现
- 数的划分(信息学奥赛一本通-T1440)
- flask Flash消息
- 银行数据部门如何管理跟使用数据?来围观星球中老师的答案
- parallels恢复linux密码,在Parallels Desktop中忘记Windows密码怎么办 Parallels Desktop忘记Windows密码的解决方法...
- Linux内核源码目录
- 微信小程序获取用户头像昵称手机号最新版
- 服务器如何装linux 系统教程,教程/操作系统 手把手教你装Linux系统
- 高一计算机教学,高一信息技术教学计划参考
- 餐馆管理系统程序流程图_这个交付应用程序使您最喜欢的中国餐馆保持活力
- 设备、设备控制器与驱动程序
- HDU - 1573 X问题
- 大学该不该开python教学_#51CTO学院四周年# python学习感受和一些愚见
- 《麦田里的守望者》谁又不是以过来人的身份,来做一个麦田里的守望者呢?
- pwm调速流程图小车_51单片机智能小车《pwm调速按键控制小车动作》
- C语言 数字实现字母表 链表实现字母表
- redis集群模式登陆