for i = 1:30
if condition1
statement1
elseif condition2
continue
else
statement2
end
statement3
end
如上所述,如果满足条件2,我在for循环中有'continue'命令跳过'statement3'。这段代码效果很好。 但是当我必须运行if-else部分进行测试时,它会出错,因为'continue'应该在for / while循环中运行。
有没有办法在for循环中做同样的事情(什么也不做,跳到下一次迭代),但也可以单独工作?
答案 0 :(得分:4)
如果你想在循环外运行完全相同的代码,因此无法使用continue
,你可以简单地重写它如下:
if ~condition2
if condition1
statement1
else
statement2
end
statement3
end
或者(我知道它不是很优雅,但确实有效):
if condition1
statement1
statement3
elseif condition2
else
statement2
statement3
end
通过如下重写上述代码(很多):
if condition1
statement1
statement3
elseif ~condition2
statement2
statement3
end
最后,如果您的statement3
特别长,并且您不想重复两次,则可以使用旁路标记进一步改进上述代码:
go3 = false;
if condition1
statement1
go3 = true;
elseif ~condition2
statement2
go3 = true;
end
if go3
statement3
end
问题在于抽象条件不允许我充分利用我的想象力。也许如果你指定你正在使用的条件,即使是以简化的方式,我也可以尝试提出更好的解决方案。
答案 1 :(得分:1)
首先,你所写的内容是你想要的。检查此代码,例如:
for i = 1:7
if i<=2
disp([num2str(i) ' statement1'])
elseif i>=4 && i<=6
disp([num2str(i) ' only continue here'])
continue
else
disp([num2str(i) ' statement2'])
end
disp([num2str(i) ' statement3']);
end
disp('yeah')
>>
1 statement1
1 statement3
2 statement1
2 statement3
3 statement2
3 statement3
4 only continue here
5 only continue here
6 only continue here
7 statement2
7 statement3
yeah
其次,你也可以这样做
for i=1:30
if condition1
statement1
statement3
elseif condition2
continue
else
statement2
statement3
end
end