WWDC 2018最新Swift 4.2功能

更少的样板=更快乐的开发人员

作为iOS开发人员,我像许多其他人一样从Objective-C开始。 在日常工作中,我与Swift一起工作,考虑到它的第一次迭代的增长,我发现它的多功能性很有希望。 是的,前几个版本的重大更改难以使用; 但是,这些不断增长的痛苦导致了一种更好,更高效的语言。 它的第四个主要版本在功能和社区方面都继续给人留下深刻印象。

上周,苹果举行了年度全球开发者大会(WWDC),其中展示了Swift的一些最新改进。 尽管Swift 5计划于2019年发布,但Swift 4.2具有其自身的优势,特别是在消除繁琐的样板代码方面。


枚举案例的派生集合

Swift的可爱功能之一是它具有使用类似结构的功能来扩展枚举的功能。 例如,如果我们要遍历下面显示的枚举中的所有Fruits ,则需要实现一些样板代码,其中包含数组中的所有案例。

除了每次要遍历数组时都创建一个allCases变量外,每次向枚举添加新的大小写时,我们还必须更新allCases数组。 这可能很麻烦,并且为开发人员错误留了太多空间。

Swift 4.2添加了一个名为CaseIterable的新协议,该协议默认情况下只是添加allCases数组。

我们需要做的就是将CaseIterable添加到我们的枚举中,现在我们可以遍历所有案例。 但是,请务必注意,具有关联值的枚举将无法扩展CaseIterableallCases数组中的元素必须具有相同的类型,而每个枚举的关联值可以包含不同的类型。

合成等量一致性

假设有一个用户对象具有我们可能要比较的简单属性。 令人讨厌的是,我们需要User对象符合Equatable协议,然后检查两个比较对象的每个属性是否相等。

尽管这看起来很简单,但是如果我们比较具有许多属性的大型对象,这也是一项不必要的麻烦任务。

Swift 4.2现在将能够比较两个 Equatable 对象,而无需实现Equatable函数。

只要每个属性都符合Equatable ,Swift就可以推断出我们的Equatable函数。 因此,开发人员将不再需要编写该样板代码。

数组的条件一致性

以前,我们无法像上面的areArraysEqual函数中所示比较两个数组的内容,因为不将Users数组视为Equatable类型。 虽然如果我们比较两个函数数组可能会有意义,但由于函数类型不是Equatable ,而元素类型为Equatable则没有意义。

在Swift 4.2中,我们提供了一个数组扩展名,可以比较两个具有Equatable元素类型的数组。

除了数组之外,可选内容和字典还通过这种新的条件一致性提供了相同的功能。

新的随机数生成器

如果您想在Swift中创建随机数,则必须使用导入的C API,这些API需要进行严格的平台检查。

坦白说,这不是最优雅的解决方案,而要正确解决问题可能会很棘手。

Swift 4.2现在为Floats和Ints提供了新的随机数生成器功能,可以接受一定范围以准确返回随机数。

此外,现在可以从数组中检索随机元素,并且可以分别通过添加randomElement()shuffled()函数对数组的元素进行混洗。


更多细节

这些是Swift 4.2的主要更改,但这里还没有涉及其他内容,例如新的哈希算法和协议。

如果您想了解Swift的最新功能,建议您访问https://apple.github.io/swift-evolution/以查看正在审查,接受或实施的最新更改。

一如既往,感谢您的阅读和记忆,更少的样板=快乐的开发人员🙂

资源资源

Swift的新功能– WWDC 2018 –视频– Apple Developer

听听Swift,安全,快速和富有表现力的语言的最新进展。 了解有关……的改进

developer.apple.com