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() :
>>come vedete l’s1=’ciao’s1='ciao' =>“ciao”"ciao" >>s2=s1.dups2=s1.dup =>“ciao”"ciao" >> ps1.object_id,s1.object_id,s2.object_ids2.object_id 20905692 20897916 => nil
object_id e’ differente tra i due.
Se volete potete anche usare clone() , che e’ un alias di dup():
>>Ovviamente sono diversi oggetti , ma ognuno e’ uguale agli altri:s3=s2.clones3=s2.clone =>“ciao”"ciao" >> ps1.object_id,s2.object_id,s3.object_ids1.object_id,s2.object_id,s3.object_id 20905692 20897916 20877096 => nil
s1==>> s1== s2 ands2==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.