在Swift 4中初始化一个双打数组

时间:2018-03-02 15:33:49

标签: arrays swift

我可以在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 的方法?

1 个答案:

答案 0 :(得分:4)

您可以从stride()

生成的序列初始化数组
let doubles = Array(stride(from: 1.0, through: 100.0, by: 1.0))

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