Leser: 5
|< 1 2 3 >| | 30 Einträge, 3 Seiten |
tschloss+2008-11-29 12:20:26--Hi, durch mein Problem vor ein paar Tagen und eure Antworten hat sich mein Verständnis bzgl. der komplexen Datentypen jetzt geändert.
Quote1) Die Datentypen Array, Hash und literale Liste (zB "qw....") sind (intern) eigentlich immer Listen von Skalaren.
1
2
3
4
my @array = (1,2,3,4);
my %hash = (1,2,3,4);
print @array; # Benutze array im Listenkontext: Gibt dieselbe Liste, mit der ich es initialisiert habe
print %hash; # Gibt auch dieselbe Liste, aber die Reihenfolge kann anders sein: 3412
Quote3) Zuweisungen auch zwischen verschiedenen Typen sind problemlos möglich (bei Hashes treten Elemente immer paarweise auf (interpretiert als key, value)). (Anmerkung: das könnte aber auch eine Intelligenz des Zuweisungsoperators sein, den Typ umzucasten)
@array = %hash; # Hash wird zur Liste gemacht, damit wird dann das Array initialisiert
Quote1) Merkt Perl sich irgendwo einen Datentyp für Arrays/Hashes?
1
2
3
4
my $ref = []; # array-referenz
print $ref; # ARRAY(...)
$ref = {}; # Hash-Referenz
print $ref; # HASH(...)
Quote3) Benötigt Perl nicht irgendwelche Metainfos zum effizienteren Zugriff auf eine Struktur, und zwar unterschiedliche für ein Array/eine Liste bzw. einen Hash?
lichtkind+2008-11-29 13:28:44--im gegensatz zu perl 6 kennt perl 5 keine unterscheidung von liste und array. qw ist nur eine kompakte schreibweise einen array zu erzeugen.
1
2
3
4
5
6
7
8
9
sub foo {
return "alpha", "beta";
}
my @array = ("alpha", "beta"); # Array wird mit Liste initialisiert
my $scalar = foo(); # Liste im skalaren Kontext: Ergibt das letzte Element
print $scalar; # "beta"
$scalar = @array; # Array im skalaren Kontext: Ergibt die Anzahl
print $scalar; # 2
|< 1 2 3 >| | 30 Einträge, 3 Seiten |