Eine kurze Erklärung, was das bedeutet:
In Ruby können Sie Methoden für ein bestimmtes Objekt definieren:
a = "hello"
def a.informal
"hi"
end
a.informal
=> "hi"
Wenn Sie dies tun, wird die Klasse des Objekts a, das zur Klasse gehört String, in eine "Geister" -Klasse geändert, auch bekannt als Metaklasse, Singleton-Klasse oder Eigenklasse. Diese neue Klasse Superklasse ist String.
Außerdem wird innerhalb von Klassendefinitionen selfdie Klasse definiert, die definiert wird
class Greeting
def self.say_hello
"Hello"
end
def Greeting.informal
"hi"
end
end
Was dort passiert, ist, dass das Objekt Greeting, das von Klasse ist Class, eine neue Metaklasse mit den neuen Methoden erhält, also wenn Sie aufrufen
Greeting.informal
=> "hi"
Es gibt keine Klassenmethoden in Ruby, aber die Semantik ist ähnlich.