我正在研究关于willSet和didSet的语法,但是我得到了错误
Playground execution failed:error: 21. プロパティの値を監視しよう.playground:15:15:
error: argument passed to call that takes no argumentsvar
JAM = AAA("EEE", 5)
~^~~~~~~~~
我编码的是
class AAA {
var name : String = "eee"
var number : Int = 4 {
willSet{
print("\(number) -> \(newValue)") // <- 値の変更前 ここで、出力していることはただ値がこれから変わるよ!ということだけである。
}
didSet{
print("Changed: \(number - oldValue)" ) // <- 値の変更後 ここで、出力していることはただ値がこれから変わったよ!ということだけである。だから、Changed: に何かコード的な意味があるわけではない。
}
}
}
var JAM = AAA("EEE", 5)
请帮我解决这个问题。
答案 0 :(得分:0)
该行
var JAM = AAA("EEE", 5)
在类AAA中查找初始化程序,您没有提供。它没有隐式定义。
为了使该行有效,您需要在类中提供初始化函数,如下所示:
init(_ name: String, _ number: Int) {
self.name = name
self.number = number
}
下划线允许您在初始化程序的调用中省略参数标签。