kopia objectu
Honza Pazdziora
adelton na informatics.muni.cz
Čtvrtek Říjen 16 10:49:01 MEST 2003
On Wed, Oct 15, 2003 at 12:06:48PM +0200, Aben Siatris wrote:
> trosku sa trapim s jednou hlupostou.
> ako mozem spravit copy objektu?
Normalne, vratite novy objekt.
> pokusam sa o to nasledovnou syntaxou
>
> my $obj1=package::new();
> my $obj2=$obj1->new();
>
> avsak obj2 sa chova nie ako kopia ale
> ako clone z obj1. akakolvek zmena v obj2
$obj2 se bude chovat tak, jak si naprogramujete new(). Pokud bude ten
konstruktor
sub new {
my $class = shift;
if (ref $class) {
return $class;
} else {
return bless { @_ }, $class;
}
}
tak bude
$obj2 = $obj1->new();
ekvivalentni
$obj2 = $obj1;
Pokud bude ten konstruktor
sub new {
my $class = shift;
if (ref $class) {
return bless { $class->content() }, ref $class;
} else {
return bless { @_ }, $class;
}
}
tam bude vracen objekt jako novy anonymni hash, s nejakymi hodnotami,
ktere klidne mohou byt uplne nov, byt budou odvozezene z hodnot
$obj1.
> sa odrazi tiez v obj1 a ja by som chcel
> vytvorit len copy. da sa to vobec???
Da se vsechno. Uplne na zacatku je treba si uvedomit, ze Perl s pojmy
jako copy a clone vubec nepracuje. Objekt je datova struktura. Jak tu
strukturu naplnite, jestli budete sdilet hodnoty ci nikoli, je zcela
na Vas.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Perl