我有以下代码:
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
是类而不是struct,则会发生同样的情况。