gpt4 book ai didi

swift - 我的代码是否足够复杂以在 Swift 中使用 switch 语句

转载 作者:搜寻专家 更新时间:2023-11-01 06:52:07 24 4
gpt4 key购买 nike

来自 Swift 文档:

Typically, you use the if statement to evaluate simple conditions with only a few possible outcomes. The switch statement is better suited to more complex conditions with multiple possible permutations and is useful in situations where pattern matching can help select an appropriate code branch to execute.

我正在尝试根据我是否遇到复杂情况来决定是否应该使用 switch 或 if/else 语句。所以我的问题是,我的情况是否复杂。

这是我的例子:

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

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

我要检查 5 到 15 个可能的条件,那么这是否会使它变得足够复杂以证明使用 switch 语句是合理的?还是复杂性基于条件而不是条件的数量?

最佳答案

最终测试是只写出两者并进行比较。

什么时候switch更好

当你处理一个有利于 switch 而不是 if/else 阶梯的情况时,你的代码将如下所示:


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

如你所见,所有的括号,重复关键字(elseif)重复运算符==和相同的重复实例标识符 (something) 添加了一堆毫无值(value)的杂音。与 switch 比较:

switch something {
case 1: foo()
case 2: bar()
case 3: baz()
default: quux()
}

if/else if/else更好

您会发现自己编写了一个开关,其中开关变量并没有真正匹配多少,而是您有一堆 where 子句来检查许多不相关的条件。比较:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com