1

是解决这个问题的方法之一。

a=[];$<.map{|l|l=='0'?($><<a.pop):a<<l}

我在终端上运行它,但它没有显示输出。

$>$DEFAULT_OUTPUT 哪里去了?

我使用p $>了 etc 但它不输出结果。

如何$>在终端上显示结果?

4

1 回答 1

1

$>工作正常,问题出在其他地方。

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"]]
于 2014-05-27T23:27:28.280 回答