
[英].forEach method applying update to all items in array instead of individual item
[英]Update individual item in the array swift
我有一个这样的数组。 更新数组时如何更新单个 var?
var value1 = 1
var value2 = 2
var value3 = 3
var array = [value1, value2, value3]
array[0] = 0
这将更新数组中的值但不会更新 var value1。 如何在更新数组时更新 var value1 而不必执行 value1 = 0?
正如jnpdx所说, Int
是一种值类型。 您描述的行为需要“引用语义”。 如果你想要这种行为,理论上你可以引入一个class
引用类型,例如:
class Foo: ExpressibleByIntegerLiteral {
var value: Int
required init(integerLiteral value: IntegerLiteralType) {
self.value = value
}
}
let foo1: Foo = 1
let foo2: Foo = 2
let foo3: Foo = 3
let array = [foo1, foo2, foo3]
array[0].value = 42 // not `array[0] = 42`, which would attempt to replace the `Foo` instance at index 0 with a new instance separate from `foo1`
print(foo1.value) // 42
在本例中,我将Int
值类型数组替换为Foo
引用类型数组。
尽管如此,我们通常会谨慎使用该模式,因为我们现在通常会避免引用类型,而尽可能使用值类型。 这有助于避免因意外共享而产生的问题。 请参阅Swift 视频中的 WWDC 2015 的面向协议编程。
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.