ruby - 未定义方法 `+' 为 nil :NilClass (NoMethodError)

标签 ruby

我正在编写一个简单的类,它使用一个名为“cash”的整数变量进行初始化。

下面是代码。当我运行它时,我得到了 NoMethodError。我知道我可以通过使用@cash 引用本地类变量来轻松解决此问题,但是我在 OOP 上阅读的一本书建议几乎不要使用 @,而是设置 attr 并简单地使用“cash”。我已经设置了 attr_accessor,但它不起作用,我想了解原因。谢谢

class Person
  attr_accessor :cash

  def initialize(cash)
    @cash = cash
  end

  def add_cash(amount)
    cash = cash + amount
  end
end

最佳答案

局部变量引用优先于同名方法调用。

同样,局部变量赋值优先于同名方法调用。 foo= 形式的 writer 方法需要一个明确的接收者。省略receiver时,不识别为方法,而是局部变量赋值。

def add_cash(amount)
  self.cash = cash + amount
end

关于ruby - 未定义方法 `+' 为 nil :NilClass (NoMethodError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26568927/

相关文章:

ruby - 如何使用 Ruby 将数据追加/添加到 JSON 文件

ruby - 如何在 Rails 中设置 AWS ElastiCache 集群? (移动响应的问题)

ruby-on-rails - 外键 : belongs_to & has_one difference

ruby-on-rails - 更多 gem 安装 rails 令人头疼

ruby - splat 运算符在没有变量名时会做什么?

ruby-on-rails - Rails,如何添加到方法 html/js?

ruby-on-rails - 删除数据库表中的所有记录

ruby-on-rails - 如何将 ActiveRecord 与 EventMachine 异步使用?

ruby-on-rails - Chrome 使用 thin 在我的 Rails 应用程序上请求 "Select a Certificate"SSL

ruby - 在 Gemfile 之外需要一个 gem