Ruby 'is_a?' класса или модуля (TypeError)
Я играю с Ruby и пытаюсь создать небольшую программу банковских счетов. Когда я запускаю эту конкретную строку кода, которая работает с create_account:
unless @response.is_a? Integer && @response.to_str.length == 4
puts "Your response must be 4 numbers in length."
create_account
else
@pin = @response
puts "Your pin has been set."
end
Получаю этот ответ:
bank_account.rb:24:in 'is_a?':class or module required (TypeError)
from bank_account.rb:24:in 'create_account'
from bank_account.rb:47:in '<main>'
Я не могу точно понять, что происходит, но я включаю остальную часть моего кода. Это неполное, очевидно, потому что я застрял в этой части. Я прохожу через цикл while и вводим "Создать учетную запись", чтобы запустить метод create_account. Моя цель - запустить условное выражение и потребовать от пользователя ввести 4-значное целое число, например, любой номер вывода ole. Если это не целое число или 4 цифры в длину, я вызываю метод create_account, чтобы заставить их начать работу.
Я запускаю ruby 2.0.0, если эта информация необходима, но я ставлю, скорее всего, это больше связано с моим кодом. Stackoverflow для меня новичок, поэтому я приношу свои извинения, если этот вопрос задан. Я попытался сделать домашнее задание, как советуется, прежде чем задавать вопрос, но я все еще в тупике. Любая помощь приветствуется.
Ответы
Ответ 1
Вам нужно поставить класс Integer
в круглые скобки:
unless @response.is_a?(Integer) && @response.to_str.length == 4
На самом деле вы evaulating is_a?
на (Integer && @response.to_str.length == 4)
, который является логическим значением, а не классом или модулем.