kotlin 对象的可变性
Mutability in kotlin object
我正在研究 Kotlin 中的可变性特殊情况。
这是我正在玩的代码:
var a = 350
val b = a
a = 8
println(b) // 350. ===> should be 8
我想将 b
保留为 val 但同时它应该能够每次都取 a
的值 a
变量被修改。
所以我尝试了对象解决方案,但如下所示,x
变量不可访问。我想这个解决方案不正确。
val object1 = object {
var x = 350
}
val object2 = object1
object1.x = 8
println(object2.x)
有没有办法同步此 x
但不将块放入 同步注释函数 中,如下所示?
@Synchronized
fun someFunction(): Int {
val object1 = object {
var x = 350
}
val object2 = object1
object1.x = 8
println(object2.x)
return object2.x
}
someFunction()
您可以将 b
定义为引用 a
:
的 属性
var a=350
val b: Int
get()=a
每次访问 b
时,它都会将该访问重定向到 a
。
以下将打印 8
而您不必使用您的对象解决方案:
var a=350
val b: Int
get()=a
fun main() {
a=8
println(b)
}
我正在研究 Kotlin 中的可变性特殊情况。
这是我正在玩的代码:
var a = 350
val b = a
a = 8
println(b) // 350. ===> should be 8
我想将 b
保留为 val 但同时它应该能够每次都取 a
的值 a
变量被修改。
所以我尝试了对象解决方案,但如下所示,x
变量不可访问。我想这个解决方案不正确。
val object1 = object {
var x = 350
}
val object2 = object1
object1.x = 8
println(object2.x)
有没有办法同步此 x
但不将块放入 同步注释函数 中,如下所示?
@Synchronized
fun someFunction(): Int {
val object1 = object {
var x = 350
}
val object2 = object1
object1.x = 8
println(object2.x)
return object2.x
}
someFunction()
您可以将 b
定义为引用 a
:
var a=350
val b: Int
get()=a
每次访问 b
时,它都会将该访问重定向到 a
。
以下将打印 8
而您不必使用您的对象解决方案:
var a=350
val b: Int
get()=a
fun main() {
a=8
println(b)
}