swift 3.0 關于協議中定義init的問題
protocol Pet : class
{
??????? var name : String {get set}
??????? init (name : String)
}
class Dog : Pet
{
??????? var name : String
??????? //??? 這個sex不想給默認值
??????? var sex : String
??????? //??? 實現Pet協議的init
??????? init (name : String)
??????? {
??????????????? self.name = name
? ? ? ? ? ? ? // ?? 這里會報錯,因為沒有給sex初始化
??????? }
}
上面的代碼,如果在協議(Pet)里面規定了一個構造函數(init (name : String))
在使用它的類(Dog)中又有自己的沒有默認值的變量(sex : String),假如這個變量就是不適合給默認值
那構造函數怎么寫???實現協議的構造函數又不可以給自己的變量賦值,因為參數列表規定就是(name : String)
那在Dog類實現的Pet協議規定的init (name : String)一定會報錯
2017-10-03
var sex : String?