加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby’is_a?’需要类或模块(TypeError)

发布时间:2020-12-16 20:07:24 所属栏目:百科 来源:网络整理
导读:我在玩 Ruby,尝试创建一个小银行帐户程序.当我运行使用create_account运行的特定代码行时: unless @response.is_a? Integer @response.to_str.length == 4 puts "Your response must be 4 numbers in length." create_accountelse @pin = @response puts "Y
我在玩 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对我来说是新的,所以如果这个问题被问到,我很抱歉.在提出问题之前,我曾经做过我的家庭作业,但是我仍然很沮丧.任何帮助是赞赏.

解决方法

您需要将类Integer放在括号中:
unless @response.is_a?(Integer) && @response.to_str.length == 4

你实际上是逃避is_a? on(整数和& @ response.to_str.length == 4),它是一个布尔值,而不是类或模块.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读