[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