Objective c 从if语句中断到else部分
我有一个if/else语句Objective c 从if语句中断到else部分,objective-c,c,if-statement,conditional,Objective C,C,If Statement,Conditional,我有一个if/else语句 if (something) { //run if logic } else { //run else logic } 在我的if逻辑阶段中,我可能会发现一些东西使我想运行if/else语句的else部分。逻辑阶段太复杂,无法只适合初始条件,某物 是否有类似于break的东西可用于跳转到if/else语句的else部分 if (something) { //run if logic } else { //run else logic
if (something) {
//run if logic
} else {
//run else logic
}
在我的if逻辑阶段
中,我可能会发现一些东西使我想运行if/else语句的else部分。逻辑阶段太复杂,无法只适合初始条件,某物
是否有类似于break的东西代码>可用于跳转到if/else语句的else
部分
if (something) {
//run if logic
} else {
//run else logic
}
我目前正在这样做,但我的团队不喜欢使用goto
if (something) {
//run if logic
if (somethingComplex) {
goto elseSomething;
}
} else {
elseSomething:
//run else logic
}
请再次注意,somethingelescomplex
是一种布尔状态,通过运行一些太大/多行的复杂代码来实现,这些代码不适合我的初始if条件,否则我只会执行:if(something&&somethingscomplex)
,如果我在调用第一个条件之前计算一些复杂的东西,我会得到假阳性结果。关于!一些
值除了
转到之外,没有任何语言功能允许您像这样随意地转移控制权
另一种更好的从代码中的两个位置移动到另一个位置的方法是使用过程:方法或函数。我认为分解else
分支的内容在这里是合适的。然后从内部if
和else
分支调用新过程
你也可以考虑重构初始条件。应该有某种方法可以将这两个检查组合起来,而不必将它们放入
if()
的头的括号中。在Objective-C中,我会使用预先设置的布尔标志,而不是使用if/else
,而是使用两个独立的if
语句,就像这样(这是Swift代码,但结构相同):
但真正的Swift将为您提供一种优雅的方式,让您可以准确地完成所需的操作—一个带有故障排除功能的开关
:
switch something {
case true:
print("hey")
if somethingComplex {
fallthrough
}
print("ho")
case false:
print("ha")
}
在上面的例子中,如果某物是真的,如果某物复杂的是真的,我们会打印“嘿”,然后打印“哈”,这正是您要寻找的流程。那么
BOOL shouldGoToB = false;
if (a) {
//run if logic
if (somethingComplex) {
shouldGoToB = YES;
}
}
if (!a || shouldGoToB) {
}
这不是我所问问题的确切答案,但是,我认为我所问的没有答案。也就是说,这是imo下一个最简单的方法;谢谢!真正的Swift会给你一个实际的方法来做你想做的事情(一个切换
和一个故障切换
),但Objective-C没有。切换的另一个原因(不是双关语)到斯威夫特!我会在我的答案中添加这一点。哇!错误答案很好!我很想切换到斯威夫特。这也为FizzBuzz提供了一个创造性的解决方案哈哈