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崩溃。它抱怨说:“与操场服务的沟通意外中断。”