Duplicare Un Oggetto

Vedi tutte le pagine e le modifiche recenti o scarica i sorgenti nella pagina


Creare una copia di un oggetto non e’ la stessa cosa che creare una variabile che usi lo stesso oggetto. Con l’operattore di assegnazione (il “=“) diciamo semplicemente a ruby “questa variabile rappresenta quell’oggetto”:
 >> s1='ciao'
 => "ciao" 
 >> s2=s1
 => "ciao" 
 >> s1.object_id==s2.object_id
 => true
Dovrebbe essere ovvio che object_id() ci restituisce un valore che identifica univocamente un oggetto :)

Ovviamente, in alcuni casi vorremmo avere un oggetto che si uguale ad un altro, ma non lo stesso, magari perche’ vogliamo cambiare uno dei due indipendentemente dall’altro.

In questo caso dobbiamo usare dup() :
 >> s1='ciao'
 => "ciao" 
 >> s2=s1.dup
 => "ciao" 
 >> p s1.object_id, s2.object_id
 20905692
 20897916
 => nil
come vedete l’object_id e’ differente tra i due. Se volete potete anche usare clone() , che e’ un alias di dup():
 >> s3=s2.clone
 => "ciao" 
 >> p s1.object_id,s2.object_id,s3.object_id
 20905692
 20897916
 20877096
 => nil
Ovviamente sono diversi oggetti , ma ognuno e’ uguale agli altri:
 >> s1== s2 and s2== s3
 => true
Ovviamente dovete definire voi un metodo dup() in maniera coerente. Ricordate che in genere la duplicazione implica la duplicazione degli ettributi, e non il semplice riferimento agli stessi.
Updated on November 26, 2005 13:01 by Ruby Fan (151.37.150.7)