如果我说
x.hello()
在Java中,对象x“调用”其包含的方法。
在Ruby中,对象x“接收”其包含的方法。
这只是表达相同思想的不同术语,还是在这里存在根本性的差异?
作为一个来自Java的人,我发现Ruby的“接收者”概念令人困惑。也许有人可以解释一下与Java的关系?
x.hello()
在Java中,对象x“调用”其包含的方法。
在Ruby中,对象x“接收”其包含的方法。
这只是表达相同思想的不同术语,还是在这里存在根本性的差异?
作为一个来自Java的人,我发现Ruby的“接收者”概念令人困惑。也许有人可以解释一下与Java的关系?
x
并没有调用hello()
。包含该代码片段的任何对象都是“调用者”(即它是“caller”)。在Java中,x
可以被称为接收器;它接收对hello()
方法的调用。myObj.to_s
时,你正在向myObj
发送to_s
消息,并且它会相应地执行该消息。在这种模型中,myObj
确实是这条消息的接收者,拥有发送该消息的代码行的类是发送方。this
是指接收者的指针,您可以使用诸如sun.reflect.Reflection.getCallerClass
之类的东西检索发送者(或调用者),而方法调用则是一种消息发送。 - Aaron Maenpaa