Куда ушел $>?

Это одно из решений этой проблемы.

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

Я запускаю его на терминале, но он не отображает вывод.

Где есть $> что пропало $DEFAULT_OUTPUT?

я использовал p $> и т.д., но это не выводит результат.

Как я могу отобразить результат $> на терминале?

1 ответ

$> работает нормально, проблема в другом месте.

irb> $><<:hello_world
hello_world=> #<IO:<STDOUT>>

Настоящий виновник $< (который ARGF). Когда ты бежишь $<.each { } в терминале нет аргументов для ARGF и он ждет их.

irb> $<.map { }
# hangs...

Если вы поместите это в файл и запустите его с аргументами командной строки или передадите аргументы из чего-то еще, это, вероятно, сделает то, что вы ожидаете.

Если вы замените $< с массивом вроде бы работает.

arr = ['0', '1', '2']
a=[];arr.map{|l|l=='0'?($><<a.pop):a<<l}
#=> [#<IO:<STDOUT>>, ["1", "2"], ["1", "2"]]
Другие вопросы по тегам