如何在Swift中打开类类型?

时间:2015-11-28 02:07:19

标签: swift switch-statement

我有以下代码:

if

如何将链式switch表示为单个font-size: smaller语句?

3 个答案:

答案 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()。

关于这个主题here还有很多。对权威的强制诉求(Martin Fowler)here

答案 2 :(得分:2)

令人惊讶的是,它正是您的想法,但不会发挥作用:

switch obj {
case (is A):
    // do something
case (is B):
    // do something
case (is C):
    // do something
default:
    // do something
}

请注意,括号不是必需的,我只是喜欢它们以便于阅读。