[^ zuweisen]: Wenn Sie nur eine destruktive Methode anstelle einer Zuweisung ausführen, sind das ursprüngliche und das neue Objekt identisch, sodass diese Frage nicht in Frage kommt.
Ich habe es nicht verstanden, also habe ich ein Experiment versucht.
class Foo
def mtd(str)
puts "[Foo:1] str => %p (%#08x)" % [str, str.__id__]
end
end
class Bar < Foo
def mtd(str)
puts "[Bar:1] str => %p (%#08x)" % [str, str.__id__]
str *= 2
puts "[Bar:2] str => %p (%#08x)" % [str, str.__id__]
super
end
end
Bar.new.mtd("abc")
Ergebnis
[Bar:1] str => "abc" (0x00003c) <--Das ursprüngliche Objekt wurde an das formale Argument übergeben
[Bar:2] str => "abcabc" (0x000050) <--Objekt durch Neuzuweisung überschrieben (andere ID)
[Foo:1] str => "abcabc" (0x000050) <--Ergebnis: Überschrieben wird verwendet
Wenn Sie nur "super" schreiben, ergänzt dies das Gefühl von "super (str)". Daher ist es besser, eine Neuzuweisung vorzunehmen.
Nur für den Fall, als ich mir das Referenzhandbuch ansah, war es fest in ** Beispielcode ** geschrieben .. (Es ist schwierig, weil es als eine der Erklärungen in Sätzen interpretiert werden kann)