从SWIFT文件:
通常,您使用if语句来评估只有少数可能结果的简单条件。switch语句更适合具有多个可能置换的更复杂条件,并且在模式匹配可以帮助选择要执行的适当代码分支的情况下非常有用。
我试图决定是否应该使用switch或if/else语句,这取决于我是否有一个复杂的条件。所以我的问题是,我的情况是否复杂。
下面是我的一个例子:

var sampleVar = Measurement(value: amount, unit: UnitLength.megameters)

if(type == "inches"){
     //do something
}
else if...

我有5到15个可能的条件,我正在检查,所以会使它复杂到足以证明使用switch语句的合理性吗?或者复杂性是基于条件而不是有多少条件?

最佳答案

最终的测试是把两者都写出来比较。
switch更好时
当您处理的情况有利于aswitch而不是if/else梯形图时,您的代码将如下所示:


if something == 1 {
    foo()
} else if something == 2 {
    bar()
} else if something == 3 {
    baz()
} else {
    quux()
}

如您所见,所有括号、重复的关键字(elseif)重复的运算符和同一标识符(==)的重复实例都添加了一堆值非常小的噪声。与something比较:
switch something {
    case 1: foo()
    case 2: bar()
    case 3: baz()
    default: quux()
}

switch/if/else if更好时
您会发现自己编写了一个开关,其中的开关变量实际上并不匹配太多,但是您有一堆else子句来检查许多不相关的条件。比较:
switch something {
    case 1: foo()
    case _ where case2_1() || case2_2(): bar()
    case _ where case3(): baz()
    case _ where case4(): quux()
}


if something == 1 || case1() { foo() }
else if case2_1() || case2_2() { bar() }
else if case3() { baz() }
else if case4() { quux() }

别忘了多态性!
只要可能,尝试将复杂的切换逻辑分解为对对象上的方法的动态调用。这允许您将每个案例的逻辑分离到一个单独的类中,在这个类中可以对所有相关的逻辑进行分组。

关于swift - 我的代码是否足够复杂,足以在Swift中使用switch语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56500193/

10-13 09:00