我正在研究已经发布的perl代码的新版本,并找到了该行:
$|++;
Run Code Online (Sandbox Code Playgroud)
AFAIK,$ | 与管道相关,如本链接所述,我理解这一点,但我无法弄清楚++(加上加号)在这里意味着什么.
先感谢您.
编辑: 在此链接中找到答案:
简而言之:它强制在下一个语句之前打印(刷新)到您的控制台,以防脚本太快.
有时,如果将print语句放在一个非常快速运行的循环中,则在程序终止之前,您将看不到print语句的输出.有时,你根本看不到输出.解决这个问题的方法是在每个print语句后"刷新"输出缓冲区; 这可以使用以下命令在perl中执行:
$|++;
Run Code Online (Sandbox Code Playgroud)
[更新]正如r指出的那样.施瓦茨,我错过了; 上面的命令会导致print在下一个输出之前刷新缓冲区.
情况就是这样:
% print/1: Prints out the integers between 1 and N
print(0) -> io:format("~w~n", [0]);
print(N) when is_integer(N) ->
io:format("~w~n", [N]),
print(N - 1).
Run Code Online (Sandbox Code Playgroud)
如果用户输入非整数,则会发生以下情况:
11> effects:print('alfalfa').
** exception error: no function clause matching effects:print(alfalfa)
Run Code Online (Sandbox Code Playgroud)
关于哲学:我应该以这种方式纠正我的程序,以便"捕获所有"的输入?
% print/1: Prints out the integers between 1 and N
print(0) -> io:format("~w~n", [0]);
print(N) when is_integer(N) ->
io:format("~w~n", [N]),
print(N - 1).
% Last Line added:
print(_Other) -> false.
Run Code Online (Sandbox Code Playgroud)
我是二郎的新手.是否有一些处理这个问题的惯例?
谢谢!