我对Kotlin很陌生,我正在使用for循环,在Kotlin脚本(*.kts文件)中,我在文件中有如下内容:
for (i in 1..5) print("$i, ")我确实认为它会把数字1到5用逗号分隔成一行,如下所示:
1, 2, 3, 4, 5, 但是,我并没有在命令行中得到任何输出。我在Mac上运行这个
kotlin ranges.kts如果我在这个单一for循环后面放置了任何内容,比如一个单独的println(),或者如果我用println替换循环中的打印,它就能工作,并给出输出。
我不明白这种行为。有人能给我解释一下吗?
Edit1:版本: kotlin: 1.3.71 MacOS 10.15.4 (Catalina)
发布于 2020-04-14 18:10:26
这与for循环无关,与print无关。如果在脚本的末尾添加System.out.flush(),它就能工作。默认情况下,写到System.out ( print在幕后使用)并不总是刷新,而且Kotlin脚本运行程序很可能在退出之前不会刷新标准输出流。
这也是使用println的原因,正如您所提到的--如果您查看实现 of println in PrintStream,您会发现它确实刷新了内部文本和字符输出流。
https://stackoverflow.com/questions/61213905
复制相似问题