我有多个类从一个基类派生的多态方法接受在基类中声明的枚举类型。我重复在子类中的枚举,使每个子类只接受值都有自己的特定组:继承中的枚举
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
}
}
这当然不工作,我得到
“操作”是不明确的类型在这种情况下查找。
我无法删除基类中的枚举,因为那样我得到了一个未声明的方法类型错误。我有一种强烈的感觉,我正在努力去改变这一切,尝试重新发明轮子。有人能指引我朝着正确的方向吗?谢谢。
您的目标是便于配置,确切的编译器检查可用性(即不支持的请求类型没有运行时错误)? – Wain
@Wain我的主要目标是确保每个子类的方法只接受允许的内容。 – Shades
我用枚举方法简单地定义了方法中允许的参数类型 – Shades