【问题标题】:Initialize and store N instances of an object in a let constant array?在 let 常量数组中初始化并存储对象的 N 个实例?
【发布时间】:2019-02-10 22:59:04
【问题描述】:

我想初始化同一个对象的N个副本并将其存储在一个不可变数组中,这样数组长度就不会改变,对象也不会被覆盖。

我尝试使用Arrayinit(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


    【解决方案1】:

    这是怎么回事?:

    class Thing { }
    
    let tenThings : [Thing] = (0..<10).map{_ in Thing()}
    

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多