繁体   English   中英

更新数组中的单个项目 swift

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM