呼叫实例方法。数组消息中的错误

发布于 2025-01-23 12:20:24 字数 407 浏览 0 评论 0原文

我是Ruby的新手。我正在尝试调用我的实例方法(摇动),以使其返回字符串“ cring”,但它一直给我留言:未定义的方法'break'[50]:array(nomethoderror)。有任何帮助,请理解为什么?

class PiggyBank
  def initialize
    @storage = []
  end

  def insert(coin)
    @storage << coin
  end

  def shake
    if @storage.empty?
      nil
    else
      'clink'
    end
  end

  def break
    @storage.count
  end
end

p PiggyBank.new.insert(50).break

I am new to ruby. I am trying to call my instance method (shake) in order for it to return the string "cling" but it keeps giving me the message : undefined method `break' for [50]:Array (NoMethodError). Any help in understanding why, please?

class PiggyBank
  def initialize
    @storage = []
  end

  def insert(coin)
    @storage << coin
  end

  def shake
    if @storage.empty?
      nil
    else
      'clink'
    end
  end

  def break
    @storage.count
  end
end

p PiggyBank.new.insert(50).break

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

调妓 2025-01-30 12:20:24

您的插入方法返回一个数组,该数组没有称为断裂的方法(断裂是您在PiggyBank上定义的方法)。

您可以从插入方法返回PiggyBank的实例(这样,您可以链接其他实例方法(例如断裂),也可以以不同的方式构建代码。

def insert(coin)
   @storage << coin
   self
end

Your insert method returns an array which has no method called break (break is a method you defined on PiggyBank).

You can either return an instance of PiggyBank from your insert method (that way you can chain additional instance methods such as break) or structure the code differently.

def insert(coin)
   @storage << coin
   self
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文