[bcn-pm] Re: Barcelona-pm Digest, Vol 1, Issue 105
albert vilella
vilella at bio.ub.es
Thu Jul 17 12:46:20 CDT 2003
> Message: 3
> Date: 17 Jul 2003 17:13:42 +0200
> From: albert vilella <vilella at bio.ub.es>
> Subject: [bcn-pm] fer c?pia d'un objecte
> To: barcelona-pm at mail.pm.org
> Message-ID: <1058454822.1363.60.camel at localhost>
> Content-Type: text/plain; charset="iso-8859-15"
>
> Hola,
>
> tinc una pregunta molt tonta de OO de perl no acabo de veure clara:
>
> 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;
>
> Llavors $b i $a ja són dos objectes independents?
>
> 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...
>
> Gràcies
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: not available
> Type: application/pgp-signature
> Size: 189 bytes
> Desc: This is a digitally signed message part
> Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20030717/8c451964/attachment-0001.bin
>
> ------------------------------
>
> Message: 4
> Date: Thu, 17 Jul 2003 18:46:36 +0200
> From: Anarion <anarion at manresa.net>
> Subject: Re: [bcn-pm] fer c?pia d'un objecte
> To: Barcelona Perl Mongers <barcelona-pm at mail.pm.org>
> Message-ID: <200307171846.36641.anarion at manresa.net>
> Content-Type: text/plain; charset="iso-8859-1"
>
> 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.
Ja ho veig.
Seria una cosa així, oi?
my $c = Data::Dumper->new([$a], ['c']);
my $dump = $c->Dump;
$b = eval $dump;
Moltes gràcies :-)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20030717/d2df23df/attachment.bin
More information about the Barcelona-pm
mailing list