Note: Testo rimosso dalla rev 1  e Testo aggiunto nella rev2

DuplicareUnOggetto

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’ quell’oggetto_”:


 >> s1='ciao'
 => “ciao” 
	s2=s1
	"ciao" 
 >> s2=s1
 => “ciao” 
	s1.object_id==s2.object_id
	"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’s1='ciao'
 => “ciao”"ciao" 
 >> s2=s1.dups2=s1.dup
 => “ciao”"ciao" 
 >> p s1.object_id,s1.object_id, s2.object_ids2.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.clones3=s2.clone
 => “ciao”"ciao" 
 >> p s1.object_id,s2.object_id,s3.object_ids1.object_id,s2.object_id,s3.object_id
 20905692
 20897916
 20877096
 => nil

Ovviamente sono diversi oggetti , ma ognuno e’ uguale agli altri:

s1==


 >> s1== s2 and s2==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.

Created on November 25, 2005 13:36 by il gruppo (256.256.256.256)