0
我一直在玩協議擴展,並提出了一些我認爲可能是一個錯誤,或者可能是我的一個誤解。擴展協議與枚舉默認實現崩潰的Xcode
說你有一些特殊的動物的能力和動物協議:
enum Ability {
case Flying
case Running
case Swimming
case Hiding
}
//All animals will conform to this
protocol Animal {
var name: String { get }
var specialAbility: Ability { get }
}
所以你定義你的動物結構:
struct Dog: Animal {
var name: String
var specialAbility: Ability
}
但隨後你需要你想每次定義的能力狗:
let rex = Dog.init(name: "Rex", specialAbility: .Flying)
那麼你想要一個默認實現的specialAbility
:
extension Animal where Self: Dog {
var specialAbility: Ability { return .Running }
}
但是,然後Xcode崩潰。它抱怨說:「與操場服務的溝通意外中斷。」