如何在 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。定义一个为您的应用程序执行特定任务的闭包。
我知道 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。定义一个为您的应用程序执行特定任务的闭包。