Как преобразовать содержание STDIN в массив?

Убедитесь, что вы указали свой адрес электронной почты в своей карточке контакта в приложении «Контакты».

:)

7
задан miketaylr 14 February 2009 в 03:49
поделиться

3 ответа

Вы хотите

myArray = $stdin.readlines

Это получит все $stdin в массив с одной записью массива на строку входа.

Обратите внимание, что это эффектно неэффективно (мудрая память) с большими входными файлами, таким образом, Вы - далеко более обеспеченное использование чего-то как:

$stdin.each_line do |l|
  ...
end

вместо

a = $stdin.readlines
a.each do |l|
  ...
end

Поскольку первый не выделяет память для всего заранее. Попытайтесь обработать файл журнала мультигигабайта второй способ видеть, насколько хороший выполнение подкачки Вашей системы... <усмехаются>

21
ответ дан 6 December 2019 в 07:52
поделиться

Что Ваш, после использует $stdin вместо $stdin.to_s

ruby -e 'p $stdin.readlines.size' < INPUT
3

ruby -e 'p $stdin.to_s'
"#<IO:0x7fc7cc578af0>"
1
ответ дан 6 December 2019 в 07:52
поделиться

STDIN.lines ленив, но дает Вам подобную массиву структуру, чтобы раздать и выполнить итерации.

1
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: