Gdzie są metody zdefiniowane na najwyższym poziomie rubinowym?

Na najwyższym poziomie definicja metody powinna skutkować prywatnymi metodamiObjecti testy wydają się to potwierdzać:

def hello; "hello world"; end

Object.private_instance_methods.include?(:hello) #=> true
Object.new.send(:hello) #=> "hello world"

Jednak poniżej działa również na najwyższym poziomie (self.meta jest klasą własnąmain):

self.meta.private_instance_methods(false).include?(:hello) #=> true

Wygląda na to, żehello metoda jest jednocześnie definiowana na klasie własnej zarówno głównej, jak iObject. Co się dzieje? Zauważ, żefalse parametr doprivate_instance_methods wyklucza metody superklasy z listy metod.

questionAnswers(1)

yourAnswerToTheQuestion