[英]var defined in protocol doesn't conform to multiple protocol
我正在為 Swift 中的協議苦苦掙扎。 我定義了一個這樣的協議:
protocol AProtocol {
var property : BProtocol {get set}
}
我想在一個類中符合AProtocol
,其屬性也符合另一個協議。 我試過這兩種方式:
class AClass: AProtocol {
var property = BClass()
}
和:
class AClass: AProtocol {
var property: BProtocol & MyBClassType = BProtocol()
}
但它們似乎都不起作用(BClass 本身向 BProtocol 確認)這個問題有點難以解釋,我希望它很清楚。
這是 Swift 語言的限制嗎? 你知道解決這個問題嗎?
您有兩個問題:首先,屬性名稱必須與協議中聲明的名稱匹配,其次,您需要將變量類型注釋為BProtocol
類型,如 Hamish 在評論中解釋的那樣。
protocol AProtocol {
var aProperty : BProtocol {get set}
}
protocol BProtocol {}
class BClass: BProtocol {}
class AClass: AProtocol {
var aProperty: BProtocol = BClass()
}
您還應該遵守 Swift 命名約定,即變量名稱的AProperty
,因此我將AProperty
更改為正確的形式aProperty
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.