|
|||||||||||||||||||||||||||
Hejsa,
Er der nogen særlig grund til, at du bruger et-argument udgaven af bless i
stedet for 2 argumentversionen?
Med 1 argument versionen kan du komme i problemer, hvis du vil nedarve fra
din Album-klasse.
--Anders
On Sat, 21 Sep 2002, Jan Eggert Kofoed wrote:
> Jeg har en klasse (Album i Album.pm)
> hvor jeg ønsker at have et array (Grupper, som optræder på et album).
>
> Jeg har implementeret en metode (albumartist) som kan indsætte
> et element i et array, som jeg har lagt 'uden for klassen',
> dvs. uden for den hash, som initialiseres i constructor new.
>
> Det ser ud til at virke efter hensigten, men jeg kunne godt tænke mig
> * at forstå objektorientering i Perl lidt bedre
> * at have en klasse, som ligner andre objektorienterede sprog.
>
> Min løsning, se eksemplet (uddrag fra mit projekt) nedenfor,
> vil ikke tillade data-hiding, dvs. flere instantieringer af Album,
> antageligvis?
>
> Hvordan kan jeg gemme et array i en klasse?
> Hvordan kan jeg tilgå (indsætte/hente data) arrayet?
>
> Jeg har ikke kunnet finde eksempler i mine bøger
> eller i ActivePerl's dokumentation.
>
> -------------------
> # $Header$
>
> package Album;
> use strict;
> use Group;
>
> my @_groups = (); # first [0] is album artist, rest is tracks [t]
>
> sub new
> {
> my $self = shift;
>
> my $r_Album =
> {
> "_name" => undef,
> "_id" => undef,
> "_dbname" => undef,
> "_released" => undef,
> "_albumartist" => undef
> };
>
> bless $r_Album;
> return $r_Album;
> } # constructor
>
> sub albumartist
> {
> my $self = shift;
> if (@_)
> {
> $self->{_albumartist} = shift;
> $_groups[0] = Group->new();
> print "scalar(_groups)=".scalar(@_groups)."\n";
> }
> return $self->{_albumartist};
> } # albumartist
>
> -------------------
>
>
> mvh
> Jan Eggert Kofoed
>
>
--
-------------------------------------------
Cand.scient. Anders Sønderberg Mortensen
Dronning Olgas Vej 55A, st.tv.
DK-2000 Frederiksberg
DENMARK
Phone: + 45 38 86 57 20
-------------------------------------------
|
||||||||||||||
|
||||||||||||||