Swift協議中類繼承協議的mutating問題

2022-08-18 18:54:13 字數 1279 閱讀 8680

之前實際開發的時候遇到的乙個小問題,網上也沒有找到相關說明。本來當時弄明白了想著記下來的,但是比較忙就耽擱了,趁今天休息記錄一下。

首先,我們看一下下面這個兩數之和的協議

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

()print

(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...