我最近重新再看《Ruby 元编程(第二版)》,在 2.4 节有如下说明:
私有方法服从一条简单的规则:不能明确指定接收者来调用私有方法。换而言之,私有方法只能通过隐性的接收者 self 调用
然后还举了一个例子
class C
def public_method
self.private_method
end
private
def private_method; end
end
C.new.public_method
然后又有如下说明:
如果去掉 self 关键字,代码就可以正常运行了。这个例子说明私有方法同时遵循两条规则:首先,如果调用方法的接收者不是自己,就必须明确指明接收者;其次,私有方法只能通过隐性接收者调用。根据这两条规则,你只能在自身中调用私有方法。这条规则称为私有规则
我的疑惑如下:
1.我在 Ruby3 的环境下试了一下例子,貌似加不加 self 都没报错,可以调用,Ruby3 是对这块做了改动么?
2.还有就是如果按照 Ruby2 的版本来理解,我还是不太明白书上说的意思:前面说私有方法的调用不能明确指定接收者来调用,后面又说如果调用方法的接收者不是自己,就必须明确指定接收者,而且私有方法只能通过隐性的接收者调用。
我感觉有点懵了,有大佬能有更简明的说法或者更直白的示例么?
补充:我在 replit 用 ruby2.7 试了一下,也没报错