/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
Tilgå variabel i klasse
Fra : Peter Henriksen


Dato : 09-09-07 00:40

Jeg ønsker at tilgå variabler der ligger i subben "new" fra en anden sub i
samme klasse.

Men hvordan får man nedenstående til at skrive "abc" ud?



#!/usr/bin/perl

use strict;
use warnings;

Test->new ('abc');
Test->print_dummy ();



package Test;

use strict;
use warnings;

sub new
{
my ($self) = shift;
my ($dummy) = @_;
}


sub print_dummy
{
my ($self) = shift;

# print new's $dummy ??
}




 
 
Christian Laursen (09-09-2007)
Kommentar
Fra : Christian Laursen


Dato : 09-09-07 06:28

"Peter Henriksen" <peter.henriksen@yahoo.xxx> writes:

> Jeg ønsker at tilgå variabler der ligger i subben "new" fra en anden sub i
> samme klasse.

perldoc perltoot

> Men hvordan får man nedenstående til at skrive "abc" ud?

#!/usr/bin/perl

use strict;
use warnings;

my $test = Test->new ('abc');
$test->print_dummy ();

package Test;

use strict;
use warnings;

sub new
{
my ($self) = shift;
my ($dummy) = @_;
bless \$dummy;
}


sub print_dummy
{
my ($self) = shift;

print $$self, "\n";
}


--
Christian Laursen

Peter Henriksen (09-09-2007)
Kommentar
Fra : Peter Henriksen


Dato : 09-09-07 07:51

>> Jeg ønsker at tilgå variabler der ligger i subben "new" fra en anden sub
>> i
>> samme klasse.
>
> perldoc perltoot

Tak. Den vil jeg gå igennem.


>> Men hvordan får man nedenstående til at skrive "abc" ud?
>
> #!/usr/bin/perl
>
> use strict;
> use warnings;
>
> my $test = Test->new ('abc');
> $test->print_dummy ();

[snip]

Jeg kan se det virker, men forstår det selvfølgelig ikke før jeg har fået
læst hele perltoot, men hvordan adskiller din løsning sig fra [1], hvor man
bare bruger our?

Er din "renere" eller bedre?



[1]
#!/usr/bin/perl

use strict;
use warnings;

our $popsi;

$popsi = '123';

Test->new ('abc','def','ghi');
Test->print_dummy ();



package Test;

use strict;
use warnings;

our $dummy;

sub new
{
my ($self) = shift;

($dummy) = @_;
}


sub print_dummy
{
my ($self) = shift;

print $dummy ."\n";
print $popsi ."\n";
}



Jesper Krogh (09-09-2007)
Kommentar
Fra : Jesper Krogh


Dato : 09-09-07 07:55

I dk.edb.programmering.perl, skrev Peter Henriksen:
> >> Jeg ønsker at tilgå variabler der ligger i subben "new" fra en anden sub
> >> i
> >> samme klasse.
> >
> > perldoc perltoot
>
> Tak. Den vil jeg gå igennem.
>
> >> Men hvordan får man nedenstående til at skrive "abc" ud?
> >
> > #!/usr/bin/perl
> >
> > use strict;
> > use warnings;
> >
> > my $test = Test->new ('abc');
> > $test->print_dummy ();
>
> [snip]
>
> Jeg kan se det virker, men forstår det selvfølgelig ikke før jeg har fået
> læst hele perltoot, men hvordan adskiller din løsning sig fra [1], hvor man
> bare bruger our?
>
> Er din "renere" eller bedre?

Ja, det er den.

> [1]
> #!/usr/bin/perl
>
> use strict;
> use warnings;
>
> our $popsi;
>
> $popsi = '123';
>
> Test->new ('abc','def','ghi');
> Test->print_dummy ();
>
>
>
> package Test;
>
> use strict;
> use warnings;
>
> our $dummy;
>
> sub new
> {
> my ($self) = shift;
>
> ($dummy) = @_;
> }
>
>
> sub print_dummy
> {
> my ($self) = shift;
>
> print $dummy ."\n";
> print $popsi ."\n";
> }


my ($obj1,$obj2) = (new Test("abc"),new Test("def"));

hvad printer $obj->print_dummy;

Jesper

--
../Jesper Krogh, jesper@krogh.cc, Jabber ID: jesper@jabbernet.dk


Michael Zedeler (09-09-2007)
Kommentar
Fra : Michael Zedeler


Dato : 09-09-07 09:22

Peter Henriksen wrote:
>>> Jeg ønsker at tilgå variabler der ligger i subben "new" fra en anden sub
>>> i
>>> samme klasse.
>> perldoc perltoot
>
> Tak. Den vil jeg gå igennem.
>
>
>>> Men hvordan får man nedenstående til at skrive "abc" ud?
>> #!/usr/bin/perl
>>
>> use strict;
>> use warnings;
>>
>> my $test = Test->new ('abc');
>> $test->print_dummy ();
>
> [snip]
>
> Jeg kan se det virker, men forstår det selvfølgelig ikke før jeg har fået
> læst hele perltoot, men hvordan adskiller din løsning sig fra [1], hvor man
> bare bruger our?
>
> Er din "renere" eller bedre?

Den er ikke renere eller bedre - hvis du benytter our, har du en
klassevariabel (en slags global variabel, tilgængelig for alle instanser
af klassen) og hvis du benytter Christians eksempel, er der tale om en
attribut. Der er altså tale om to ret forskellige ting.

Mvh. Michael.

Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407849
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste