【发布时间】:2013-03-18 19:10:52
【问题描述】:
如果 Ruby 中的所有“函数”都是方法,那么当我调用方法时没有明确提及调用它们的对象时,它们会发送给谁?
Ruby 编程语言书(Flanagan 和 Matsumoto)说,如果省略对象,则在 self 上调用方法。
如果这段代码有效
p "123"
那么这应该可以工作
self.p "123"
但它没有!
在这种情况下,我在全局范围内运行它,因此 self 是 main 并且 self.class 是 Object。所以我不能在一个简单的 Object 实例上调用 p(这是有道理的)。
我知道 Object 包括声明 p 的内核。解释器如何知道如何访问此声明?
【问题讨论】:
-
您真的阅读了错误信息吗?它非常清楚地解释了正在发生的事情。
-
从 NoMethodError 中很难猜到它是被调用的同一个对象并且该方法是私有的。此外,Ruby 的私有方法方法对于 Ruby 初学者来说并非易事,尤其是在使用过 Java、C++ 等之后
-
对不起,你是对的,它确实说调用了私有方法。我正在使用 Netbeans,是的,我什至没有阅读整行内容。愚蠢的:(
标签: ruby