我在玩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‘来启动create_account方法。我的目标是运行条件,并要求用户键入一个4位数的整数,就像任何ole引脚号码一样。如果它既不是整数,也不是4位数,我会调用create_account方法让它们重新开始。
如果这些信息是必要的,我会运行ruby 2.0.0,但我打赌这可能更多地与我的代码有关。Stackoverflow对我来说是新的,所以如果有人问我这个问题,我很抱歉。在提问之前,我试着按照建议做了功课,但我还是被难住了。任何帮助都是非常感谢的。
发布于 2014-04-30 02:47:02
您需要将类Integer
放在括号中:
unless @response.is_a?(Integer) && @response.to_str.length == 4
您实际上是在评估(Integer && @response.to_str.length == 4)
上的is_a?
,它是一个布尔值,而不是一个类或模块。
https://stackoverflow.com/questions/23372692
复制相似问题