Ruby出现'is_a?' 需要类或模块(TypeError)的错误怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (29)

我正在学习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>'

提问于
用户回答回答于

你需要把这个Integer类放在括号里:

unless @response.is_a?(Integer) && @response.to_str.length == 4

实际上is_a?在判断(Integer && @response.to_str.length == 4)哪一个是布尔值,而不是类或模块。

扫码关注云+社区