In Bezug auf:Was bedeutet Klasse << selbst?
class Test
class << self
def hi
puts "Hi there"
end
end
ich mit folgendem Bild in meinem Kopf kam:
Da alles in Ruby ein Objekt ist, Klassen selbst sind Objekte der Klasse Class
. Mit dem Aufruf class << self
öffnen Sie Class
Definition von innen Test
und injizieren wenige Instanzmethoden. Da Test
eine Instanz von Class
ist, können Sie diese Methoden genauso aufrufen, wie Sie Instanzenmethoden für Ihre Objekte aufrufen: Test.hi
.
Im Folgenden ist der Pseudo-Code, der meinen vorherigen Satz zu visualisieren hilft:
class Class
def hi
puts “Hi there”
end
end
Test = Class.new(class Test
end)
Test.hi
Bin ich dieses Recht zu bekommen?
Also was Sie sagen, ist im Grunde, anstatt 'Class' zu ändern, erstellt Ruby eine anonyme Klasse, die von' Class' erbt und hat 'hi' Methode definiert, und ist Klasse von' Test' Objekt? – spacemonkey
Ja. Das ist richtig. – sawa
Schön, das endlich zu knacken. Vielen Dank! – spacemonkey