方法调用顺序混淆



我正在尝试学习d,所以我从hello world开始,并试图扩展它。

import std.stdio;
import core.thread;
void main(string[] args){
    writeln("Hello World!");
    Thread.sleep(dur!("seconds")(5));
    writeln("Press enter key to exit...");
    writeln(readln());
}

所以我希望我的输出是下面的

Hello World!
Press enter key to exit...
//input "abcd"
abcd
但是我得到了这个
//input "abcd"
Hello World!
Press enter key to exit....
abcd

睡眠功能甚至被跳过。发生了什么?

这是一个常见问题解答,当我读到标题时,我希望看到一个IDE,你标记了它,所以耶!我找不到我的旧答案链接到,但它的缺点是输出和睡眠确实发生,它们只是由IDE管道缓冲,直到最后才看到。

如果你在readln之前和/或在第一个writeln之后添加一个stdout.flush();,你将看到输出-这迫使缓冲区在做任何其他事情之前进入屏幕。

正常控制台输出将自动刷新一行,但ide被视为管道;程序与另一个程序对话,而不是与用户对话,因此它认为可以按数据块而不是按用户可见行进行缓冲。

相关内容

  • 没有找到相关文章

最新更新