gpt4 book ai didi

ruby - 为什么 break 不能让我退出 ruby​​ -n 循环?

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:48 25 4
gpt4 key购买 nike

这个网站说

The -n switch acts as though the code you pass to Ruby was wrapped in the following:

while gets
# code here
end

但是如果我输入 ruby -n

然后输入returnexitquitbreak,他们为什么不让我离开上面的无限循环?

但不知何故 end 做到了:

$ ruby -n
return
break
exit
quit
end
-:5: syntax error, unexpected keyword_end, expecting end-of-input

最佳答案

当您运行 ruby -n 时,Ruby 期望来自 STDIN 的两个不同文件:脚本(因为您没有在参数中提供 Ruby 脚本名称,也没有在 -e),以及要处理的文件(由于 -n)。因此,return 不会仅仅因为此时脚本尚未运行而停止您的脚本; return 脚本,您需要等到开始输入下一个文件才能使return 起作用。

试试这个:

$ ruby -n
puts "ECHO: #{$_}"
return if $. == 2
<Ctrl-D>
hello
# => ECHO: hello
world
# => ECHO: world
$

Unix/OSX 上的 Ctrl-D(Windows 上的 Ctrl-Z)将指示文件结束,因此 Ruby 将继续输入第二个。因此,前两行是脚本。结束该文件后,下一行 (hello) 用作脚本的输入,脚本将回显它。下一行 (world) 继续脚本的输入,但现在行计数器 $. 显示它是输入的第二行,return 执行,脚本结束,正如它应该的那样。

关于ruby - 为什么 break 不能让我退出 ruby​​ -n 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51015560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com