Ich habe diese Frage von dieser Diskussion bekommen. Ein Methodenaufruf wie object.m
bedeutet nicht immer, dass die Klasse von "object" eine "m" -Methode hat, genauso wie die find-Methode für ein Array-Objekt nicht direkt vom Array-Objekt, sondern vom eingemischten Enumerable-Modul stammt. Meine Frage ist, wie können wir anhand einer Methode die Klasse bestimmen, aus der die Methode stammt?
tobyhede's Antwort ist genial, aber ich habe nur ein bisschen in irb
gegraben und es ist nicht nötig, die Ausgabe von #inspect
zu teilen. Die Klasse Method
hat einige nützliche Methoden:
%Vor% Insbesondere die Methode #owner
, die den Eigentümer als korrektes Objekt zurückgibt:
vielleicht verwenden Sie caller (), um Ihnen das Backtrace zu geben, siehe:
Tags und Links ruby