我有以下代码:
if
如何将链式switch
表示为单个font-size: smaller
语句?
答案 0 :(得分:4)
extension Base {
func next() -> Base {
switch self {
case is A: return B()
case is B: return C()
case is C: return A()
default: return A()
}
}
}
答案 1 :(得分:2)
理想情况下,您可以通过使用多态来避免在此场景中使用if语句。
例如,在基类中定义一个方法X()并在每个子类中覆盖它以返回B(),C(),A()等。
然后在你的下一个方法中,只需返回obj.X()。
答案 2 :(得分:2)
令人惊讶的是,它正是您的想法,但不会发挥作用:
switch obj {
case (is A):
// do something
case (is B):
// do something
case (is C):
// do something
default:
// do something
}
请注意,括号不是必需的,我只是喜欢它们以便于阅读。