次のコードがあります。
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 が 1 回呼び出されます。(b.a).value =
問題は、との違いは何b.a.value =
ですか? そして、なぜSwiftはこのように振る舞うのでしょうか?
B
構造体ではなくクラスの場合も同様です。