在Swift 4中初始化一个Doubles数组

Adr*_*ian 4 arrays swift

我可以Int在Swift 4中初始化的数组,如下所示:

// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let intArray = Array(1...10)
Run Code Online (Sandbox Code Playgroud)

如果我将数组指定为的数组,Double如下所示:

let doubleArray1: [Double] = Array(1...100)
Run Code Online (Sandbox Code Playgroud)

...编译器说:

无法将“数组”类型的值转换为指定的类型“ [Double]”

如果我尝试这样做:

let doubleArray1 = Array<Double>(1...100)
Run Code Online (Sandbox Code Playgroud)

...编译器这样说...

无法为类型为'(CountableClosedRange)'的参数列表调用类型为'Array'的初始化程序

我使用使其工作map,如下所示:

// [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0]
let doubleArrayMap = Array(1...10).map{Double($0)}
Run Code Online (Sandbox Code Playgroud)

有没有一种“清洁”的方法来快速初始化一个数组而Doubles 无需map在Swift中使用

Mar*_*n R 5

您可以根据产生的序列初始化数组stride()

let doubles = Array(stride(from: 1.0, through: 100.0, by: 1.0))
Run Code Online (Sandbox Code Playgroud)

但是要注意有限的浮点精度:如果增量不是整数值,则舍入误差会累积。映射(和缩放)整数范围将是更安全的解决方案。