Sto lavorando a una soluzione per i disegni tecnici (svg/ruby). Voglio manipolare rettangoli, e hanno un metodo di add!
in questa classe:Perché non c'è un metodo di copia profonda in Ruby?
class Rect
def add!(delta)
@x1+=delta
... # and so on
self
end
end
ho anche bisogno di un metodo che restituisce un add
Rect
, ma non la manipolazione self
:
def add(delta)
r=self.dup/clone/"copy" # <-- not realy the 3 and no quotes, just in text here
r.add! delta
end
dup
e clone
no fare la mia cosa ma:
def copy; Marshal.load(Marshal.dump(self)); end
fa.
Perché una tale funzionalità di base non esiste in semplice Ruby? Per favore, non dirmi che potrei annullare add
e add!
, lasciando che il lavoro sia add
e add!
chiamandolo.
Perché non esiste? Funziona: 'Marshal.dump' +' Marshal.load'. Puoi nominare alcuni dei linguaggi di programmazione che hanno una copia profonda a livello di lingua? –
il tuo punto, penso, che io sono come un bambino viziato con Ruby, trovando tutto qui, che ho perso in altri posti MrGreen – halfbit
"Perché" rende questa domanda difficile/impossibile per chiunque tranne Matz, et al., rispondere. –