使用游乐场。
我有以下结构:
struct Foo {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
}
我将其中的一个实例声明为属性观察者,默认值为 the 的“James”name
和 的 33 age
:
var myFoo = Foo(name: "James", age: 33) {
willSet {
print("my foo will be: \(newValue)")
}
didSet {
print("my foo was: \(oldValue)")
}
}
尝试编辑name
实例时:
myFoo.name = "John"
我可以在日志上看到:
我的 foo 将是: Foo(name: "John", age: 33)
我的 foo 是:Foo(姓名:“James”,年龄:33)
这是我的期望。但是,当声明Foo
为类而不是结构时:class Foo
并运行完全相同的代码,日志上不会出现任何内容。
背后的原因是什么?