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 会被调用一次。(b.a).value =问题是和之间有什么区别b.a.value =?为什么 Swift 会有这样的行为?

如果B是类而不是结构,也会发生同样的情况。

4

0 回答 0