我使用迅速2.0,我有一個協議和在協議來創建的方法的缺省的實現的延伸部,該代碼是作爲休耕:協議擴展,突變功能
protocol ColorImpressionableProtocol {
var lightAccentColor: UIColor? {get set}
var accentColor: UIColor? {get set}
var darkAccentColor: UIColor? {get set}
var specialTextColor: UIColor? {get set}
mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?)
}
extension ColorImpressionableProtocol {
mutating func adoptColorsFromImpresion(impresion: ColorImpressionableProtocol?){
lightAccentColor = impresion?.lightAccentColor
accentColor = impresion?.accentColor
darkAccentColor = impresion?.darkAccentColor
specialTextColor = impresion?.specialTextColor
}
}
我稍後在我的代碼試圖調用此方法和我得到的是一條錯誤:
「不能一成不變值使用可變成員:‘自我’是不可改變的」
的代碼是休耕:
init(impresion: ColorImpressionableProtocol?){
super.init(nibName: nil, bundle: nil)
adoptColorsFromImpresion(impresion)
}
我能想到的唯一的事情就是在這種情況下'自我'是一種協議,而不是一類。然而,我必須錯過一些東西來使這個概念發揮作用。一個由協議定義的方法的缺省實現,該協議編輯也由相同協議定義的值。
謝謝您的幫助和時間:)
我相信這是我正在嘗試做的正確語法,Perfecto! 謝謝 – CWineland
我不得不問這是出於理智的緣故......還有什麼可以實現一個協議,除了一個類,什麼是防範?我只是沒有看到任何其他的結果,但一個類符合它 – CWineland
@CWineland:協議也可以通過一個結構來實現。 –