[bcn-pm] fer còpia d'un objecte

Anarion anarion at manresa.net
Thu Jul 17 11:46:36 CDT 2003


A Dijous 17 Juliol 2003 17:13, albert vilella va escriure:
> Començo per crear un objecte:
>
> $a = Bio::SeqFeature::Generic->new();
>
> ara treballo amb ell, modificant els seus valors:
>
> $a->seq = "AATCCATCAG";
> $a->length = 10;
> #...
>
> I ara vull fer una còpia. Com ho faig?
>
> $b = Bio::SeqFeature::Generic->new();
> $b = $a;
Aqui acabes de sobrescriure $b amb $a.
$a no es mes que una refenrencia a algun tipus de dades, i ara i $a i $b son 
una referencia al mateix objecte.
>
> Llavors $b i $a ja són dos objectes independents?
>
No.
> Ara necessito modificar $b (sense modificar $a):
>
> $b->seq = "AAA";
> $b->length = 3;
> #...
>
> Llavors $a no s'hauria de modificar, oi?
>
> O m'estic perdent en algún punt...
Estas modificant $a i $b perque son el mateix objecte. La disponibilitat de 
clonar un objecte a destar implementada a la clase que utilitzes. Sino sempre 
pots fer algun truc com usar Data::Dumper i eval i ferte un clonatge manual.
-- 

BEGIN{$^W+=$SIG{__WARN__}=sub{$_=pop}}$-,$-+=$-+++s$a+ +.+$\$^X$-+print





More information about the Barcelona-pm mailing list