Arrays 如何在swift中生成具有同一类的不同实例的不可变数组
因此,在swift中,数组和可变数组之间没有明显的区别,但Apple文档表示,当您知道元素的数量时,最好使用不可变数组。假设我想创建一个Hi类型的不可变数组,它有x个Hi类型的不同元素 我可以这样做,但它会将相同的实例分配给数组中的每个元素Arrays 如何在swift中生成具有同一类的不同实例的不可变数组,arrays,swift,xcode6,Arrays,Swift,Xcode6,因此,在swift中,数组和可变数组之间没有明显的区别,但Apple文档表示,当您知道元素的数量时,最好使用不可变数组。假设我想创建一个Hi类型的不可变数组,它有x个Hi类型的不同元素 我可以这样做,但它会将相同的实例分配给数组中的每个元素 var array = [Hi](count: x, repeatedValue: Hi()) 我可以这样做,但数组中的元素是允许的,因此不可编辑 var array = [Hi](count: x, repeatedValue: nil) for hi
var array = [Hi](count: x, repeatedValue: Hi())
我可以这样做,但数组中的元素是允许的,因此不可编辑
var array = [Hi](count: x, repeatedValue: nil)
for hi in array {
hi = Hi()
}
数组是否有一个接受闭包的构造函数,以便我告诉它如何生成每个元素?作为一个表达式,简单地说:
[Int](count: x, repeatedValue: 0).map { _ in Hi() }
或者,更简洁地说,正如@vacawama和使用Range.map所建议的那样
(1...x).map { _ in Hi() }
hi=hi()for i in 0..x{array[i]=Hi()}
它位于一个for-in循环中,该循环在数组上迭代。您的循环在数组的内容上迭代。你需要循环数组的索引。另外,您无法将数组的内容初始化为nil
,因为这些值不是可选的值。感谢map方法正是我所要寻找的:)并且您可以使用\uu
而不是x
,因为您不打算使用它,所以您正在创建两个数组,而您只需要一个。如果x
非常大,这可能会咬到你。试试:数组(映射(1…x,{inhi()}))
(警告:在电话上键入,可能需要调整)很好!作为一个团队,我们想出了一个非常好的答案。这就是StackOverflow如此棒的原因!