1
比方說,我們有一個協議定義爲:擴展協議與通用associatedtype
protocol PAT {
associatedtype Element
}
,我也有一個枚舉(典型的結果)定義爲:
enum Result<Value> {
case success(Value)
case error(Error)
}
現在我想添加當Element
是Result<Value>
但是編譯器不能確定Value
,因此觸發編譯錯誤,指示「引用通用需要參數」,對PAT
的擴展。
這裏的代碼擴展:
extension Pat where Element == Result {
}
好問題。我認爲可以做'元素==結果'或其他東西,但我不確定是否可以爲任何Result類型執行此操作,同時保留Value的通用屬性。一種選擇是使Result符合其他協議,然後你可以說'Where Element:OtherProto'。 –
jtbandes
@jtbandes Yep'結果'有效,但符合另一個協議也不起作用。我的意思是它在某些情況下有效,但如果你的方法或變量想要使用'Value',它就不會。它是:「價值只能用作具體或通用參數」 –
farzadshbfn
你想在擴展中做什麼? – jtbandes