我正在寻找更好的替代方案,以下代码。假设一些常用的编程语言(C/C++,JAVA,...):替代“while”循环
1)
while(true) {
foo = ... something ugly ...
if(foo == null) break;
... some code
}
不是很好,因为使用一个循环,直到永在可能成为 “迷失” 休息一些代码的中间。
2)
foo = ... something ugly ...
while(foo != null) {
... some code
foo = ... something ugly ...
}
不是很好,因为分配给 “foo” 被复制。同样在这种情况下:
2B)
for(foo = ... something ugly ...;
foo != null;
foo = ... something ugly ...) {
... some code
}
3)
goto INIT:
while(foo != null) {
... some code
INIT: foo = ... something ugly ...
}
“GOTO” 到一个循环的中间。
4)
do {
foo = ... something ugly ...
if(foo != null) {
... some code
}
} while (foo != null)
条件被复制。
这似乎很奇怪,所以很常见没有很好的实现。
选项4有什么问题? – biziclop
选项1有什么问题? – SLaks
@biziclop:条件“foo!= null”必须重复。如果条件比较复杂,或者是对另一个函数的调用,则可能是一个问题。 –