我可以在Swift 4中初始化Int
的数组,如下所示:
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
let intArray = Array(1...10)
如果我将数组指定为Double
的数组,如下所示:
let doubleArray1: [Double] = Array(1...100)
......编译器说:
无法转换类型'数组'的值指定类型' [双]'
如果我试试这个:
let doubleArray1 = Array<Double>(1...100)
......编译器说这个......
无法为类型&#39;数组&#39;调用初始化程序。有一个参数 类型列表&#39;(CountableClosedRange)&#39;
我使用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)}
是否有&#34;清洁剂&#34;在Swift中快速初始化Doubles
数组而不使用map
的方法?
答案 0 :(得分:4)
您可以从stride()
:
let doubles = Array(stride(from: 1.0, through: 100.0, by: 1.0))
但请注意有限的浮点精度: 如果增量不是整数值,则舍入误差可以 积累。然后映射(和缩放)整数范围 更安全的解决方案。