【发布时间】:2018-01-23 21:28:09
【问题描述】:
假设我有一个类,我像这样定义attr_accessor:
private
attr_accessor :attribute
我明白为什么使用 self.attribute 读取器方法不起作用 - 在 Ruby 中,您不能在显式接收器上调用私有方法。
我感到困惑的是,为什么这条规则不适用于作者?为什么我可以调用self.attribute = 1,并且不会抛出任何访问冲突错误?
【问题讨论】:
-
如果不做任何研究,我猜这是因为需要
self.来消除分配局部变量的歧义。 -
是的,我在想它必须这样做。我想我想知道它是否是一种特殊情况来防止这样的模棱两可的调用,或者我不理解的对象模型是否允许它。
-
这不是指定样本的复制品。 OP 了解您不能使用
self.attribute调用私有方法,例如attribute。问题是为什么他可以使用self.attribute =调用私有mutator。这确实令人惊讶,也是一个很好的问题。
标签: ruby