Ich habe eine Struktur in meinem Ruby-Code, die ein wenig wie diese späterWarum ändert String :: sub!() Das Original eines geklonten Objekts in Ruby?
Parameter = Struct.new(:name, :id, :default_value, :minimum, :maximum)
aussieht, schaffe ich eine Instanz dieser Struktur
freq = Parameter.new('frequency', 15, 1000.0, 20.0, 20000.0)
An einem gewissen Punkt mit, ich brauche eine exakte Kopie dieser Struktur, so nenne ich
newFreq = freq.clone
Dann habe ich newFreq
ändern den Namen
newFreq.name.sub!('f', 'newF')
Die, wundersamerweise, ändert freq.name
, auch! Eine einfache Zuweisung wie newFreq.name = 'newFrequency'
ändert sich nicht freq
.
Soll das so funktionieren?
Edit: Ist es eine gute Idee, eine Klasse anstelle einer Struktur zu verwenden und clone
überladen, um eine tiefe Kopie zu machen?