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