所以在swift中,Array和一个可变数组之间没有明显的区别,但Apple文档说当你知道元素的数量时,使用不可变数组总是更好。所以说我想制作一个Hi类型的不可变数组,它有x个不同的Hi类型元素。
我可以这样做但它会为数组中的每个元素分配相同的实例
var array = [Hi](count: x, repeatedValue: Hi())
我可以这样做但是数组中的元素是let,因此不可编辑
var array = [Hi](count: x, repeatedValue: nil)
for hi in array {
hi = Hi()
}
是否有一个Array的构造函数,它接受一个闭包,所以我可以告诉它如何制作每个元素?
答案 0 :(得分:2)
作为表达,简单地说:
[Int](count: x, repeatedValue: 0).map { _ in Hi() }
或更简洁,正如@vacawama和使用Range.map
所建议的那样(1...x).map { _ in Hi() }