博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 4.1带来条件一致性等语言上的提升
阅读量:6835 次
发布时间:2019-06-26

本文共 1185 字,大约阅读时间需要 3 分钟。

\

看新闻很累?看技术新闻更累?试试,每天上下班路上听新闻,有趣还有料!

\
\\

Xcode 9.3中的带来了一些语言上的提升,包括EquatableHashable协议的自动实现和条件一致性等。

\\

条件一致性

\\

即,泛型类型只有在其类型参数满足特定要求的时候才会遵循某个协议。例如,一个Array只有当它的元素也遵循Equatable协议的时候,才能实现Equatable协议。这可以用下列声明表示。

\\
\extension Array: Equatable where Element: Equatable {\  static func ==(lhs: Array, rhs: Array) -\u0026gt; Bool { ... }\}\
\\

这弥补了Swift泛型上的缺陷,使得泛型适配器类型(例如,反映组合类型能力的泛型类型)完全成为可能。例如,在Swift 3中存在4种不同的处理“懒”项目的泛型类型:LazySequenceLazyCollectionLazyBidirectionalCollectionLazyRandomAccessCollection。其中每一种类型都重新实现或者继承了和组合类型相同的API。使用条件一致性,某一种类型的Sequence可以声明遵循懒协议,而无需定义任何中间泛型类型。

\\

Synthesized == and hashValue

\\

Swift 4.1编译器能够为那些声明遵循EquatableHahable协议的structs和enums,。以前,开发者必须自己实现那些方法,而那是一件非常繁琐的任务:在通常情况下,==方法的实现必须比较structs或unions的每一个相应成员;而hashValue方法必须设法保证返回一个唯一的字符串。在Swift 4.1,开发者只需声明遵循那些协议,相关的方法就会自动生成,提供所有存储的分别符合EquatableHashable的属性或枚举值。

\\

Swift 4.1中的其它显著改变如下:

\\
  • ,可以在key-path下标和哈希过的集合中使用:\\
\let s = \"Hashable\"\let p = \\String.[s.startIndex]\s[keyPath: p] // \"H\"\
\\ 。KeyPath现在支持下标、可选的链接和可选的强制换行。 \\ 。 \\ 与classes已存在的限制相似, 。在访问struct字段前,struct必须已经调用
self.init进行了初始化。\\\

想要全面了解所有变更,你可以访问官方的。

\\

查看英文原文:

\\

感谢对本文的审校。

\

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

转载地址:http://gnxkl.baihongyu.com/

你可能感兴趣的文章
浅谈算法学习
查看>>
前端知识点——图片
查看>>
thinkphp源码分析(三)—自动加载篇(Loader的分析)
查看>>
Blink 真香
查看>>
一块听听:Mixin 主网上线语音直播文字稿
查看>>
brew安装错误brew Error: /usr/local must be writable!
查看>>
可应用于实际的14个NLP突破性研究成果(三)
查看>>
[LeetCode] 41. First Missing Positive
查看>>
阿里如何将“高峰前扩容、高峰后缩容”的梦想照进现实?
查看>>
分布式系统关注点——初识「高可用」
查看>>
Node.js学习之路22——利用cheerio制作简单的网页爬虫
查看>>
聊一聊我对 React Context 的理解以及应用
查看>>
很多程序员都不会的问题,你知道多少?
查看>>
Scrapy-redis分布式组件
查看>>
package.json里的一些属性讲解
查看>>
leetcode 12 Integer to Roman
查看>>
Swoole+Lumen:同步编程风格调用MySQL异步查询
查看>>
探索 JUC 之美---Future 与 FutureTask
查看>>
《Java RESTful Web Service实战》第一章的实现补漏
查看>>
smarty 中的for循环
查看>>