如何在 Swift 中存储对整数的引用

How to store a reference to an integer in Swift

我知道 swift 有引用类型和值类型。我知道 Int 是一种值类型。但是如何存储对整数的引用?

var x:Int = 1
var y:Int = x   // I want y to reference x (not copy)
++y
println(x)     // prints 1, but I want 2

我试过使用盒装类型,也试过使用 Int 数组,但都无法保存对整数的引用。

我想我可以自己写

class IntRef {
    var a:Int = 0
    init(value:Int) { a = value }
}

var x:IntRef = IntRef(value: 3)
var y = x
++y.a
println(x.a)

好像有点别扭

不幸的是 Integer 或 Swift 中没有引用类型,因此您必须自己制作一个 Box-Type。

例如通用的:

class Reference<T> {
    var value: T
    init(_ value: T) { self.value = value }
}

你也可以使用闭包。我认为这些更好,因为它们更强大,也更具体。它们不仅存储引用,而且还指示将如何使用引用。例如,

var x:Int = 1
var setx = { (a:Int) in x = a }
var getx = { x }
setx(getx() + 1)
println(x)             // This will print 2

我不建议实际定义 getx/setx。定义一个为您的应用程序执行特定任务的闭包。