之前實際開發的時候遇到的乙個小問題,網上也沒有找到相關說明。本來當時弄明白了想著記下來的,但是比較忙就耽擱了,趁今天休息記錄一下。
首先,我們看一下下面這個兩數之和的協議
protocol
test:
customstringconvertible
varnum2:
intfunc
getsum() ->
intfunc
sum()
//num1
變為num1+num2
}extension
test
}extension
test
mutating
func
sum()
}playground沒有報錯,說明這個協議沒問題。但是我們來試一下讓class繼承這個看似沒有問題的協議
class
testclass:
test
convenience
init(_
num1:
int,
_num2:
int)
}結果編譯器報錯,type 'testclass' does not conform to protocol 'test'
最後個人的解決方案就是宣告這個協議只有類可以繼承,這樣就可以刪掉mutating了
protocol
test:
class
,customstringconvertible
varnum2:
intfunc
getsum() ->
intfunc
sum()
//num1
變為num1+num2
}extension
test
}extension
test
func
sum()
}class
testclass:
test
convenience
init(_
num1:
int,
_num2:
int)
}然後測試一下
vartest =
testclass(1
,2)print
(test
)test
.sum
(test
)執行結果如下
1
3
swift繼承 多型 擴充套件 協議
swift的繼承是單一繼承。class classname superclass 方法多型 class baseclass class superclass 屬性多型 通過繼承屬性 你可以改變 get和set class baseclass class superclass 禁止多型 將整個類標識為...
Swift中的協議
equatable協議用於相等的比較,遵守這個協議後必須對 運算子進行過載。struct record equatable func left record,right record bool let recorda record wins 10,losses 5 let recordb recor...
作業 Swift列舉 類 派生 協議
此次作業為第二個作業 swift類的屬性與方法 的補充,照常,先貼要求 定義gender列舉 性別的列舉 enum gender int 定義department列舉 公寓的列舉 enum department 定義schoolprotocol協議 學校協議 protocol schoolproto...