Swift 的六个杀手级特性

693 查看

相比较 Objective-C 而言,Swift一些很有用的特性。Erica Sadun 在这篇总结了他最爱的 6 个。

Swift 有许多优点。下面介绍一下我最钟爱的 个函数。

1. Stride

Swift 的 stride 函数返回一个任意可变步长 类型值的序列。可变步长类型是可以设置偏移量的一维标量。所以,如果你要建立一个浮点序列,序列值的范围比如在 0.0 到 8π 之间,只需要使用 stride 去创建序列,然后通过一定的映射规则可应用到一个函数上。

Stride 有两个变种。下面使用 to 形式创建了如下序列:

最后一个值严格小于最大值。但在 through 形式下,最后一个值将会小于或者等于最大值。

这和开区间与闭区间之间的区别大致相似。与闭区间不同,数学方法无法保证 through 方式生成序列的最后一个值能够等于最大值。通过如下表达式,

生成的元素是 0.0, 0.3, 0.6, 0.9,下一个值将会是 1.2,但 1.2 大于 1.0,所以序列在 0.9 处终止了。

Stride 方法非常适合映射。当在 playground 中使用时,正如文章开头看到的那样,它可以创建漂亮的输出图表。

2.GeneratorOf

使用 GeneratorOf 方法,可以用一行或者两行代码快速创建序列。例如,下面代码输出一个自然数序列:

每次调用 next(),它都会输出一个新值。

稍微调整一下上述代码就,可以产生一个偶数序列:

或者生成一个 Fibonacci 序列:

Mike Ash 提供了一个单行代码生成 Fibonacci 序列的绝妙方法。(点击查看

3. Split

使用 SplitS方法可以分解字符串或者其他序列,追加一个任意类型的分隔符,来决定具体在什么位置进行分割。

4. Lazy

Lazy 方法返回一个可以用来筛选或者映射的序列或者集合类型,并且不会产生任何中间数组。使用这些结果作为另一个处理程序的输入。

5. Zip

Zip 方法利用序列创建值对。传入两个参数,Zip 可以返回一个 Zip2([T], [U]) 序列,可以用来映射或者过滤。

通过映射的方法可以将条目压缩到数组对中。

6. Format Strings

格式化字符串并不只用于 Foundation。可以建立你自己的字符串,不需要NSString。

使用以下的初始化语句,你可以省略两个方括号:

那么你所需要输入的是:

如果喜欢这篇文章的话,可以查看我的 playgrounds book!

p.s. 谢谢Mike Ash 和 Kevin Ballard 提供的原材料。