【发布时间】:2015-12-29 03:21:38
【问题描述】:
我有多个从一个基类派生的类,这些类具有一个多态方法,该方法接受基类中声明的枚举类型。我在子类中重复枚举,以便每个子类只接受其自己的特定值组:
class Character {
enum Actions {
}
func performAction(action: Actions) {
// Functions to be performed by all subclasses
}
}
class Warrior: Character {
enum Actions {
case Attack, Block, Charge
}
override func performAction(action: Actions) {
// Add subclass-specific behavior
}
}
class Wizard: Character {
enum Actions {
case Attack, CastSpell, Run
}
override func performAction(action: Actions) {
// Add subclass-specific behavior
}
}
这当然行不通,我明白了
'Actions' 对于这种上下文中的类型查找是不明确的。
我无法删除基类中的枚举,因为我得到了一个未声明的方法类型错误。我有一种强烈的感觉,我将这一切都错了,并试图重新发明轮子。有人可以指出我正确的方向吗?谢谢。
【问题讨论】:
-
您的目标是易于配置,准确的编译器检查可用性(即不支持的请求类型没有运行时错误)?
-
@Wain 我的主要目标是确保每个子类的方法只接受允许的内容。
-
我使用枚举方法只是为了定义方法中允许的参数类型