关于willSet和didSet的语法错误,

时间:2018-03-21 12:18:21

标签: swift

我正在研究关于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)

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

该行

var JAM = AAA("EEE", 5)

在类AAA中查找初始化程序,您没有提供。它没有隐式定义。

为了使该行有效,您需要在类中提供初始化函数,如下所示:

init(_ name: String, _ number: Int) {
    self.name = name
    self.number = number
}

下划线允许您在初始化程序的调用中省略参数标签。