Как использовать stdin и stdout в Ruby - PullRequest
0 голосов
/ 27 февраля 2020

Итак, у меня есть следующий метод, который работает, без использования stdin или stdout.

def main(lines)
  lines.each_index do |i|
    word = lines[i]
    if word.length > 1 && word.length <=11 
    puts "I use #{word}"
  end
  end
end

main(["Google", "yahoo", "stackoverflow", "reddit"])

Но я пытаюсь понять, как stdin и stdout работают с вышеприведенным.

Поэтому, когда stdin - «Google», stdout - «Я использую Google»

Мне пришлось заменить main(readlines) на приведенный выше массив только для того, чтобы он работал.

main(readlines) ===> main(["Google", "yahoo", "stackoverflow", "reddit"])

Я не знаю, как реализовать командную строку, которая делает это.

Для stdouts он наступит раньше puts?

stdout.puts "I use #{word}"

1 Ответ

1 голос
/ 27 февраля 2020

Используйте один из следующих способов:

$stdout.puts "I use #{word}"

или

STDOUT.puts "I use #{word}"

Для получения дополнительной информации см. " Разница между $ stdout и STDOUT в Ruby" .

Вы можете упростить ваш скрипт:

def main(lines)
  lines.each_with_index do |i,v| # or use each instead if u just want only the value and change |i,word| to |word|
    if word.length > 1 && word.length <=11 
    puts "I use #{word}"
  end
  end
end
...