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 self
die 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.