我有以下代码:
class A {
var value = 1
}
struct B {
private var _a: A
var a: A {
get {
print("getter")
return _a
}
}
init(a: A) {
_a = a
}
}
let b = B(a: A())
(b.a).value = 10
// print "getter" once
b.a.value = 10
// print "getter" twice
如果我只是阅读a.value
,getter 会被调用一次。(b.a).value =
问题是和之间有什么区别b.a.value =
?为什么 Swift 会有这样的行为?
如果B
是类而不是结构,也会发生同样的情况。