a=[];$<.map{|l|l=='0'?($><<a.pop):a<<l}
我在终端上运行它,但它没有显示输出。
$>
$DEFAULT_OUTPUT 哪里去了?
我使用p $>
了 etc 但它不输出结果。
如何$>
在终端上显示结果?
a=[];$<.map{|l|l=='0'?($><<a.pop):a<<l}
我在终端上运行它,但它没有显示输出。
$>
$DEFAULT_OUTPUT 哪里去了?
我使用p $>
了 etc 但它不输出结果。
如何$>
在终端上显示结果?
$>
工作正常,问题出在其他地方。
irb> $><<:hello_world
hello_world=> #<IO:<STDOUT>>
真正的罪魁祸首是$<
(即ARGF
)。当您$<.each { }
在终端中运行时,没有 args forARGF
并且它挂起等待它们。
irb> $<.map { }
# hangs...
如果你把它放在一个文件中并使用命令行参数运行它,或者从其他东西通过管道输入参数,它可能会做你期望的事情。
如果$<
用数组替换,它似乎可以工作。
arr = ['0', '1', '2']
a=[];arr.map{|l|l=='0'?($><<a.pop):a<<l}
#=> [#<IO:<STDOUT>>, ["1", "2"], ["1", "2"]]