Эй, ребята, я новичок в Ruby, так что извиняюсь, если это кажется глупым вопросом, просто не могу понять, что я сделал неправильно.Ruby - До тех пор, пока петля не работает правильно
Я изо всех сил пытаюсь найти онлайн-помощь, не совсем уверен, что искать, не пиши роман о проблеме.
Целью кода является то, что он должен просить пользователя вводить данные, пока они не введут букву. Я делаю это, проверяя, находится ли вход пользователя в массиве «алфавит», и когда он это делает, он должен проверить его «слово», чтобы проверить, если письмо в слово, которое я случайно выбрать в другом месте (я пытаюсь код палач, только для связи)
вот код:
def Check_Alph(word)
until $alphabet.include? 'guess' == true
puts "Please guess a letter from the alphabet"
guess = gets.chomp
puts "#{guess}"
end
if $alphabet.include? 'guess' == true
puts "valid letter entered, checking.."
$guessed_Letters << guess
if word.include? 'guess' == true
puts "good guess! That letter was in the word!"
puts "Letters confirmed to be in word: #{correct_Letters}"
end
end
end
в консоли это просто появляется «Пожалуйста, угадайте письмо из алфавита», затем, когда я ввожу письмо, он просто спрашивает вопрос. Я даже попробовал вывести «угадать», чтобы проверить, правильно ли оно получило значение, и это было не совсем точно, что происходит.
Любая помощь была бы принята с благодарностью!
Edit:
def Check_Alph()
guess == nil
until $alphabet.include?(guess)
puts "Please guess a letter from the alphabet"
guess = gets.chomp
puts "#{guess}"
end
end
«== true» не только лишний. В этом примере (без круглых скобок) это фактически приводит к ошибке, потому что '==' имеет более сильное связывание, чем вызов метода. Ruby читает эту строку следующим образом: '$ alphabet.include? ('Guess' == true)', что, очевидно, совпадает с '$ alphabet.include? (False)'. А поскольку '$ alphabet' содержит символы, это всегда будет возвращать' false'. – spickermann