Похоже, вы пытаетесь получить вход внутри вашего цикла.
Попробуйте
loop do
user_input = gets.chomp!
word_arr = user_input.to_s.split(' ')
word_arr.each { |x| puts x.engToLatin() + ' '}
puts "EOF to Quit"
end
В противном случае вы пытаетесь получить следующую строку ввода, когда ее нет. Кроме того, do
не требуется для оператора while
.
Вам также не нужно сбрасывать @user_input
на ''
.
И поскольку все это в блоке, вам не нужно использовать переменные экземпляра, если только методы, которые вы вызываете, не нуждаются в них.
Также ваше условное всегда верно. gets
будет блокироваться, пока не получит строку ввода. Вы можете использовать loop
для бесконечного цикла, который заканчивается прерыванием.
Кроме того, вам не нужно очищать STDOUT
, если вы используете puts
для последней строки вместо print
.
Все это может быть сценарий или метод в модуле. Экземпляр даже не нужно делать. И если вы это сделаете, вместо использования двух строк с вашим mg.create
, вы должны определить метод initialize
. Тогда он используется как конструктор, и все, что вы установили при создании экземпляра, должно быть помещено туда.
Все это можно сделать так:
loop do
puts gets.chomp.split(' ').map{ |x| x.engToLatin() }.join(' ')
puts "EOF to Quit"
end