在這裏嘗試是我的設置:斯威夫特協議繼承和動態對象混亂
protocol CommonFeatureProtocol { }
extension CommonFeatureProtocol { }
protocol SpecificFeature1Protocol : CommonFeatureProtocol {
func specificFeature1Method()
}
protocol SpecificFeature2Protocol : CommonFeatureProtocol {
func specificFeature2Method()
}
struct specificFeature1 : SpecificFeature1Protocol { }
struct specificFeature2 : SpecificFeature2Protocol { }
我在其他類(
UtilFeature
)的一個
現在,將有可能使用功能對象和特定功能的方法,如 -
UtilFeature.feature.specificFeature1Method()
UtilFeature.feature.specificFeature2Method()
喜歡的東西(在UtilFeature
) -
var feature : CommonFeatureProtocol {
return specificFeature1() //or specificFeature2()
}
什麼是不工作的。你期望什麼? – Mundi
請注意,像'protocol'&'struct'這樣的關鍵字必須是小寫字母(您的代碼不會被編譯)。類型名稱也應該是'UpperCamelCase',例如'SpecificFeature1Protocol'。否則'specificFeature1()'看起來像一個函數調用。 – Hamish
@Mundi:UtilFeature.feature.specificFeature1Method()將不起作用commonFeatureProtocol不具有specificFeature1Method() – BaSha