写点什么

Swift 4.1 增强了泛型、编译器和包管理器

  • 2018 年 4 月 08 日
  • 本文字数:1043 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

Swift 4.1 发布正式版,它为 Swift 包管理器和 Foundation 带来了新的语言特性、构建选项和增强功能。

正如 InfoQ 之前报道的那样,当 Swift 4.1 在 Xcode 9.3 beta 版本中初步可用时,语言级别最重要的新特性是条件一致性(Conditional Conformance)。这一特性允许开发人员规定泛型类型只有在其类型参数满足给定要求时才符合协议。 在定义泛型适配器类型时,这点非常重要。泛型适配器类型是指能够反射组合类型的泛型,例如能够暴露其组件部分 API 的集合。

Swift 4.1 中另一个对泛型类型的扩展是能够指定关联类型递归限制 Swift 中的关联类型在协议规范中用作未知类型的占位符,在使用协议时需要提供这些类型。 例如,以下是使用 Item 关联类型的 Container 协议:

复制代码
protocol Container {   associatedtype Item   mutating func append(_ item: Item)   var count: Int { get }   subscript(i: Int) -> Item { get }
}

Item 可以被限制为特定类型或协议,例如:

复制代码
protocol Container {
associatedtype Item : Bar
...
}

在 Swift 4.1 之前,关联类型的类型或协议约束不能递归引用正在被定义的协议。 Swift 4.1 解除了这一限制,因此我们能够使用下面的递归协议:

复制代码
protocol Container {
associatedtype Item : Container
...
}

Swift 4.1 中的其他新语言特性同样值得一提:

在编译器方面,除了已经支持的速度优化之外,Swift 4.1 现在还支持代码大小优化模式 新的优化选项可以在全模块和单文件编译模式下工作,而全模块能提供最佳结果。 据苹果称,对于一些项目,这可能会将代码量减少5%到30%。

最后,Swift 4.1 为包管理器带来了增强。 也就是说,Swift 4.1 现在可以正确解决使用不同协议(例如ssh 和http)的软件包之间的依赖关系。 此外,它现在还能更快地处理共享依赖关系。

Swift 4.1 在 MacOS Xcode 9.3 中可用,而官方二进制文件在Ubuntu 中可

查看英文原文 Swift 4.1 Enhances Generics, Compiler Optimizations, and Package Manager


感谢无明对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2018 年 4 月 08 日 19:00639
用户头像

发布了 34 篇内容, 共 17.1 次阅读, 收获喜欢 45 次。

关注

评论

发布
暂无评论
发现更多内容

36,Python基础开发与实践

程序媛可鸥

Python 程序员 面试

90后,要有多少存款才正常?答案太扎心了,阿里P8大佬整理

程序媛可鸥

Python 程序员 面试

kudu参数优化设置,让集群飞起来~,2021年Python开发陷入饱和

程序媛可鸥

Python 程序员 面试

Python 实现七大排序算法,Python中高级面试必知必会

程序媛可鸥

Python 程序员 面试

17个新手常见错误,送给初学Python的你!,憋个大招

程序媛可鸥

Python 程序员 面试

Kafka server,Python面试

程序媛可鸥

Python 程序员 面试

Python 命令行参数详解,Pythonui基础

程序媛可鸥

Python 程序员 面试

k8s组件的梳理,Glide的缓存机制

程序媛可鸥

Python 程序员 面试

Kafka 常用命令总结,给Python程序员的一些面试建议

程序媛可鸥

Python 程序员 面试

百度希壤元宇宙平台上线首个汽车数字展厅,领克探索汽车营销新方式

百度大脑

Python 深度集成的神器级 IDE,从此告别Excel!,成为阿里P7Python架构师到底有多难

程序媛可鸥

Python 程序员 面试

2022美赛单变量深度学习LSTM 时间序列分析预测,作为Python开发者

程序媛可鸥

Python 程序员 面试

架构实战营 毕业设计项目

樰巳-堕~Horry

架构实战营 「架构实战营」

CSDN终于破2万粉了,几百块钱的课程可白嫖,就是宠粉,Python笔试面试题

程序媛可鸥

Python 程序员 面试

Python GUI编程:关于 tkinter 怎么才能写出更好看的界面

程序媛可鸥

Python 程序员 面试

Python 使用 PyQt5 开发的关机小工具分享,为什么阿里的程序员成长如此之快

程序媛可鸥

Python 程序员 面试

Python 基础教程:动态类型模型(1),阿里巴巴Python面试题答案

程序媛可鸥

Python 程序员 面试

Python 基础教程:动态类型模型,超通俗解析

程序媛可鸥

Python 程序员 面试

Redis的数据类型实践

javaadu

Redis 核心技术与实战 Redis 数据结构

10个Python set 常用操作函数!,oppoPython面试题

程序媛可鸥

Python 程序员 面试

4万字【Python高级编程】保姆式教学,330页PDF10万字的知识点总结

程序媛可鸥

Python 程序员 面试

Girlfriend含苞待笑——一次性处理上百份文档,Python开发实战讲解

程序媛可鸥

Python 程序员 面试

python DataFrame数据格式化(设置小数位数,百分比,Python常用面试题

程序媛可鸥

Python 程序员 面试

28,2021最新Python面试笔试题目分享

程序媛可鸥

Python 程序员 面试

Apple任意代码执行漏洞,为了跳槽强刷1000道Python真题

程序媛可鸥

Python 程序员 面试

k8s组件的梳理(1),Python篇

程序媛可鸥

Python 程序员 面试

Python 三十个实践、建议和技巧,各种风格的Python面试题进来了解一下

程序媛可鸥

Python 程序员 面试

06 - vulhub - Apache HTTPD 多后缀解析漏洞,2021年Python大厂面试分享

程序媛可鸥

Python 程序员 面试

30余种加密编码类型的密文特征分析,差点挂在第四面

程序媛可鸥

Python 程序员 面试

一个配件、一块面料,制造企业流水线因为AI变了新模样

百度大脑

python pandas库统计分析基础必备知识汇总,2021Python网络编程总结篇

程序媛可鸥

Python 程序员 面试

Swift 4.1增强了泛型、编译器和包管理器_开源_Sergio De Simone_InfoQ精选文章