【发布时间】:2019-02-10 22:59:04
【问题描述】:
我想初始化同一个对象的N个副本并将其存储在一个不可变数组中,这样数组长度就不会改变,对象也不会被覆盖。
我尝试使用Array 的init(repeating:count:) 函数,但如果repeating 参数不是原语,它似乎会使用count 引用repeating 参数创建一个数组。
下面的操场代码说明了这个问题:
class Thing { }
let tenThings : [Thing] = Array(repeating: Thing(), count: 10)
if (tenThings[0] === tenThings[1]) {
print("tenThings stores 10 references to the same Thing.")
} else {
print("tenThings stores 10 references to 10 different Things")
}
> tenThings stores 10 references to the same Thing.
我希望tenThings 存储与此相同的结果:
let tenMoreThings: [Thing] = [Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing(), Thing()]
我想我可以通过循环附加到一个临时数组并将其分配给 let 常量数组,但我希望有一个更简洁的解决方案。
【问题讨论】:
标签: arrays swift initialization constants