Mein Verständnis ist, dass Methode Look-Up die Klasse des Empfängers und die dort definierten Methoden scannt. Wenn es nicht gefunden wird, wird die Hierarchiekette solange verschoben, bis sie gefunden wird. Das passt diesen Fall:Wie funktioniert Methode in Ruby nachschlagen?
class A
def hello
p 'hello world'
end
end
A.new.hello
wo hello
in A.new.class
definiert ist. Aber es ist nicht die Situation passen, wenn wir eine Methode für ein Objekt aufrufen Class
:
class A
def self.hello
p 'hello world'
end
end
A.hello
Dies sollte mit Verfahren A
‚s eigen Klasse verknüpfen hello
->Object
->BasicObject
.
Ruby findet die Methode, indem sie auf die Klasse des Empfängers schaut und dann die Leiter nach oben bewegt. Es sollte die Methode A.class
, die Class
ist, und nie die Methode hello
gefunden haben?
@sawa Was ich meinte ist, dass es funktioniert, aber ich bin mir nicht sicher, warum es funktioniert. Der Prozess, durch den ruby eine Methode findet, besteht darin, die Klasse des Objekts zu betrachten und dann die Methode dort zu finden. In meinem zweiten Beispiel ist 'A's Klasse' Class' und dort ist keine 'Hallo' Methode definiert? – yask
@yask Entschuldigung. Ich habe nicht verstanden, was du verlangst. – thesecretmaster