當我試圖實現我的方案是這樣的:我可以在協議中使用init func嗎?
protocol Serialization {
func init(key keyValue: String, jsonValue: String)
}
我收到一條錯誤消息:在函數聲明預計標識符。
爲什麼我得到這個錯誤?
當我試圖實現我的方案是這樣的:我可以在協議中使用init func嗎?
protocol Serialization {
func init(key keyValue: String, jsonValue: String)
}
我收到一條錯誤消息:在函數聲明預計標識符。
爲什麼我得到這個錯誤?
要點:
func
在init
方法的前面。init
方法,因此您現在需要在init
方法前加上關鍵字required
的前綴。這表明你遵守的協議要求你有這個方法(即使你可能獨立地認爲這是一個好主意)。所涵蓋的其他人,你的方案應該是這樣的:
protocol Serialization {
init(key keyValue: String, jsonValue: String)
}
而且作爲一個例子,就是符合該協議的類看起來可能是這樣:
class Person: Serialization {
required init(key keyValue: String, jsonValue: String) {
// your logic here
}
}
公告要求需要關鍵字在init
方法的前面。
爲什麼你想要一個協議呢?它爲什麼關心類型是如何創建的? – Mark 2014-09-05 22:52:09
一個對象可以有多個init函數。爲什麼沒有一個協議規定可以被調用? – 2014-09-06 00:29:38
這是因爲'init'前面的'func'關鍵字。刪除它並再試一次。 – 2014-09-06 00:44:54