我正在编写一个简单的类,该类使用一个名为“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
Run Code Online (Sandbox Code Playgroud)
局部变量引用优先于同名方法调用。
同样,局部变量赋值优先于同名方法调用。这种形式的 writer 方法foo=需要一个显式接收器。当接收者被省略时,它不被识别为一个方法,而是一个局部变量赋值。
def add_cash(amount)
self.cash = cash + amount
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10705 次 |
| 最近记录: |