|
| 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.
| |
|
|