我正在编写一个简单的类,它使用一个名为“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/