为什么';不要打断我的ruby-n循环?
这个网站说 n开关的作用就好像传递给Ruby的代码是用 以下是:为什么';不要打断我的ruby-n循环?,ruby,Ruby,这个网站说 n开关的作用就好像传递给Ruby的代码是用 以下是: while gets # code here end 但是如果我键入ruby-n 然后键入return或exit或quit或break,为什么他们不让我脱离上面的无限while循环 但不知何故,end做到了: $ ruby -n return break exit quit end -:5: syntax error, unexpected keyword_end, expecting end-of-input 当您运行r
while gets
# code here
end
但是如果我键入ruby-n
然后键入return
或exit
或quit
或break
,为什么他们不让我脱离上面的无限while循环
但不知何故,end
做到了:
$ ruby -n
return
break
exit
quit
end
-:5: syntax error, unexpected keyword_end, expecting end-of-input
当您运行
ruby-n
时,ruby需要STDIN提供两个不同的文件:脚本(因为您没有在参数中提供ruby脚本名称,也没有在-e
中提供ruby表达式),以及要处理的文件(由于-n
)。因此,return
不会因为脚本尚未运行而停止脚本return
是脚本,您需要等待,直到开始输入下一个文件,才能让return
工作
试试这个:
$ ruby -n
puts "ECHO: #{$_}"
return if $. == 2
<Ctrl-D>
hello
# => ECHO: hello
world
# => ECHO: world
$
$ruby-n
放置“ECHO:{$}”
如果$.=,则返回2.
你好
#=>埃科:你好
世界
#=>回声:世界
$
Unix/OSX上的Ctrl-D(Windows上的Ctrl-Z)将指示文件结束,因此Ruby将继续输入第二个文件。因此,前两行是脚本。结束该文件后,下一行(
hello
)将作为脚本的输入,脚本将回显它。下一行(world
)继续脚本的输入,但现在行计数器$。
显示它是输入的第二行,返回
执行,脚本应该结束。谢谢,您以非常清晰、逻辑和透彻的方式解释了它!