Thread Nicht benötigte Argumente trotzem in eine Variable kopieren? (29 answers)
Opened by Kuerbis at 2018-02-22 08:19

hlubenow
 2018-02-22 23:56
#188031 #188031
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
2018-02-22T16:04:34 Kuerbis
In $info sind Informationen drinnen, habe aber noch nicht daran gedacht, dass man das $self nennt.

Ok, meine Seite orientiert sich sehr an Python, da nennt man das "self". Der Interpreter würde auch ein anderes Wort verstehen, aber "self" ist eine "starke Konvention", das heißt, alle nennen das so (und der Psychopath, der weiß, wo man wohnt, würde sauer, wenn man es anders nennen würde).
Zu Perl findet man das "$self" aber auch z.B. in "perldoc perlootut", also wird das schon so sein.
Zu beachten ist, daß man für "$self" nichts als Argument mit übergibt, wenn man eine Klassenmethode von außen aufruft. Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/perl

use warnings;
use strict;

package Box {

    sub new {
        my $classname = shift;
        my $self = {content => 1};
        return bless($self, $classname);
    }

    sub addContent {
        my $self = shift;
        my $addition = shift;
        $self->{content} += $addition;
    }

    sub showContent {
        my $self = shift;
        print $self->{content};
        print "\n";
    }
}

my $box = Box->new();
$box->addContent(5);
$box->showContent();

Es heißt also nur "$box->addContent(5);", nicht "$box->addContent($irgendwasFuerSelf, 5);".
Oder auch "$box->showContent();", und nicht "$box->showContent($irgendwasFuerSelf);".
Die Methode addContent() erwartet also zwei Argumente, erhält aber nur eins, und ist damit trotzdem zufrieden.
Das ist etwas merkwürdig (daran sieht man auch, daß das $self merkwürdig, bzw. etwas Besonderes ist), aber so funktioniert das nunmal bei den Klassen.

View full thread Nicht benötigte Argumente trotzem in eine Variable kopieren?