3

次のコードがあります。

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構造体ではなくクラスの場合も同様です。

4

0 に答える 0