【发布时间】:2016-11-11 14:02:19
【问题描述】:
我有一个包含一堆不同情况的枚举。想象它就像石头剪刀布。
enum Play {
case Rock, Paper, Scissors
}
现在我正在创建一个具有Play 属性的类和一个将另一个Play 参数作为“攻击者”的方法,我需要比较所有可能的结果。我能想到的唯一方法是嵌套开关,但由于我的枚举有超过 3 个案例,这成为一个很大的函数,出错的可能性很高。
func determineEffectiveness(withAttacker attacker: Play) {
switch attacker.type {
case .Rock {
switch self.type {
case .Rock {
return 0
}
case .Paper {
return 1
}
case .Scissors {
return -1
}
}
}
case .Paper {
// ...etc
}
}
}
这是一种丑陋的蛮力方法,但我正在努力想出更好的解决方案。
更新:
像往常一样...在我提出问题后,我想出了一个更好的解决方案。我将把该解决方案作为答案,但在我得到其他人的答案之前我不会接受它,因为可能有更好的方法。
【问题讨论】:
标签: ios swift switch-statement