在Swift中,如果我们想创建一个一定步长的数组,可以如下代码操作:

var array: [Double] = []
for value in 0..<10 {
    array.append(Double(value) * 0.3)
}

不过如果想在某个区间创建这样一个序列的话,会比较麻烦。为此,Swift提供了一个便捷函数:stride,可以在某个区间内创建一个任意可变步长的序列,这个步长可以是任意值。所以上面这个问题的实现可以如下代码处理:

let array = stride(from: 0, to: 3, by: 0.3).map {
    $0
}

实际上,stride的产生的序列如下代码:

start, start + stride, start + 2 * stride, …, start + n * stride

stride有两个变种:

  1. stride(from:to:by),开区间处理,最后一个值严格小于最大值;
  2. stride(from:through:by),闭区间处理,最后一个值小于或等于最大值

stride函数与map配合起来可以做一些有意思的事情。