gpt4 book ai didi

objective-c - 评估 if...else if... block 上的每个条件语句

转载 作者:太空狗 更新时间:2023-10-30 03:47:04 27 4
gpt4 key购买 nike

Objective-C 是评估 if...else if... block 上的每个语句,还是评估每个语句,然后如果条件为真则跳过剩余的评估被发现了吗?

这更像是一个与性能相关的实用问题,而不是其他任何问题。

是的,我确实知道 if block 本身的内容没有被执行,但我指的是被评估的实际语句。

例子

if ([condition A] == test) {
// Do something
} else if ([condition B] == test) {
// Do something
} else if ([condition C] == test) {
// Do something
} else {
// Do something because all other tests failed
}

那么...如果条件 A 为真,条件 B 和 C 是否仍会得到评估?

如果他们这样做,那么使用 switch 语句是否以相同的方式执行,或者 switch 是否只测试每个条件,然后因为中断而退出评估?

我的理解是,在 if...else if... block 上,每个条件都会被评估,因此使用开关或嵌套 if(呃 - 不要喜欢那里的想法)在对大量数据进行大型评估操作时可能会更快(针对可能的一百个语句检查数十万个项目)。

只是好奇 :-)

最佳答案

否,如果满足条件 A,则不评估 B 和 C。实际上,它们是无论如何都不会执行的 else 子句的一部分。

请注意:if (condA || condB) 或 if (condA && condB) 也是惰性求值,即在第一种情况下,仅当 condA 为假时才求值 condB,在第二种情况下condA 为真时的情况。

关于objective-c - 评估 if...else if... block 上的每个条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3945114/

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