我有一个相当简单的结构:
do i = 1,x
if (condition) then
do_stuff
exit
end if
end do如果do-loop变得足够大,exit语句就不再好用了(我认为它大约是。就像我看go to语句一样)。
我正在寻找一种更干净的方法来在适当的时候退出循环,这样其他查看我的代码的人也可以更清楚地知道发生了什么。
我想有一件事可以解决,那就是像这样的东西
lkeepgoing = .true.
iterator = 1
while (lkeepgoing) then
if (condition) then
do_stuff
lkeepgoing = .false.
end if
iterator = iterator+1
end while虽然我认为这清楚了为什么我想要退出循环而不必查看整个循环,但我认为它看起来过于复杂了。
那么问题来了:当一个条件以一种清晰、干净的方式被满足时,如何退出do-loops,而不是使用容易产生意大利面代码的语句?
发布于 2017-04-26 22:53:16
您的第一个代码片段使用exit的方式没有任何问题。像这样的小跳跃几乎不是意大利面条代码。与您的第二个代码片段相比,更清楚的是,当满足特定条件时,您可以有规律地提前退出循环。
请记住,exit非常局限于它可以跳转到的地方,而go to可以用来跳转到所有地方。
不要坚持一刀切的规则,比如永远不要太严格地使用goto,当它们使代码变得更糟糕时,当然不会。
https://stackoverflow.com/questions/43637516
复制相似问题