我可以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中使用?
您可以根据产生的序列初始化数组stride():
let doubles = Array(stride(from: 1.0, through: 100.0, by: 1.0))
Run Code Online (Sandbox Code Playgroud)
但是要注意有限的浮点精度:如果增量不是整数值,则舍入误差会累积。映射(和缩放)整数范围将是更安全的解决方案。