我知道D已经有了while循环,但由于它的高级功能,我想看看如果在代码中实现while循环会是什么样子.
dsi*_*cha 10
使用延迟函数参数:
void whileLoop(lazy bool cond, void delegate() loopBody) {
Begin:
if(!cond) return;
loopBody();
goto Begin;
}
// Test it out.
void main() {
import std.stdio;
int i;
whileLoop(i < 10, {
writeln(i);
i++;
});
}
Run Code Online (Sandbox Code Playgroud)
使用带递归的函数:(尾调用将得到优化;))
void whileLoop(bool delegate() cond,void delegate() fun){
if(cond()){
fun();
whileLoop(cond,fun);
}
}
Run Code Online (Sandbox Code Playgroud)
应该使用闭包
或使用过于过度/未充分利用 goto
startloop:if(!condition)goto endloop;
//code
goto startloop;
endloop:;
Run Code Online (Sandbox Code Playgroud)