Hi,
In einem Buch von Bruce Tate namens “Beyond Java” habe ich ein
Anwendungs-Beispiel für die o.g. Methode gefunden:
class Class
alias_method :original_new, :new
def new(*args)
result = original_new(*args)
print "Unattended laptop error."
return result
end
end
gibt man diese Klasse in irb ein und erstellt ein Array mit i = [1,2,3]
wird, wie sollte es anders sein, “Unattended laptop error” ausgegeben.
Aber:
9 Mal, also:
Hat jemand eine Erklärung für diese Phänomen? Mir ist total
schleierhaft,
warum es neun Ausgaben gibt. Anscheinend werden 9 Objekte erzeugt,
obwohl
ich nur ein Array erzeugt habe.
class Class
@@count = 0
alias_method :original_new, :new
def new(*args)
print “\n#{@@count}: self==#{self}\n”
@@count = @@count + 1
result = original_new(*args)
print “Unattended laptop error.”
return result
end
end
… woran Du die Objekte erkennst, die der IRB im Hintergrund anlegt
(bei einem direkten Aufruf sieht man, zumindest auf meinem System,
nichts - vermutlich weil der Code im “Normalfall” eher in C als in
Ruby geparst wird).