【发布时间】:2016-03-06 00:51:10
【问题描述】:
我一直在使用协议扩展,并想出了一些我认为可能是错误的东西,或者可能是我的误解。
假设你有一些特殊的动物能力和动物协议:
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 崩溃了。它抱怨“与操场服务的通信意外中断。”
【问题讨论】:
标签: xcode swift enums protocols