Wie Sie sich auf ein Element eines Arrays in Perl

Aufgabe. Im Perl-Programm gibt es ein array. Ein must-Read Wert eines der Elemente dieses Arrays.

Hier ist ein Beispiel wie es geht:

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print $arr[1];

Wenn Sie den Text speichern des Programms in die Datei script.pl und starten perl script.pl, das auf dem Bildschirm erscheint der Text two.

Also, was hier passiert.

Zunächst erstellen wir ein array mit dem Namen @arr. Die Variable ist ein array beginnt mit dem Zeichen @, dieses Symbol ist ähnlich wie die erste den Buchstaben von dem Wort "array". Wir haben ein array gelegt und darin 3 Elemente. In unserem Beispiel sind alle 3 Elemente ist die Zeilen, aber im Allgemeinen in einem array kann Elemente aus völlig unterschiedlichen Typen, zum Beispiel Strings, zahlen und Links.

Jedes Element im array eine eigene Sequenznummer. Diese Nummer wird als "index". In der Programmiersprache Perl, wie in vielen anderen Programmiersprachen die Elemente des Arrays beginnen nummeriert mit der Zahl 0. Im Beispiel in einem array enthält 3 Elemente:

  • Zeile 'one' ist ein Element des Arrays mit dem index 0
  • Zeile 'two' ist ein Element des Arrays mit dem index 1
  • Zeile 'three' ist ein Element des Arrays mit dem index 2

Um sich auf ein Element eines Arrays mit dem index 1 schreiben müssen $arr[1]. Schreiben Sie den Namen des Arrays und in eckigen Klammern schreiben wir den index des Elements, die wir benötigen, zu bekommen. Achten Sie auf eine Besonderheit. Wenn wir uns ein Element eines Arrays, so wird anstelle des symbols @ im Namen des Arrays zu schreiben Symbol $ (Dollar-Zeichen, ein Symbol ähnlich wie die erste Buchstaben im Wort "Skalar"). Die Idee war, dass bei dieser Aufnahme wir ausdrücklich betonen, dass wir brauchen, um einen einzelnen Wert, aber meiner Meinung nach ist es ein Fehler im Design Sprache. Es ist nichts vereinfacht, sondern im Gegenteil immer schwieriger machte. In der Programmiersprache Perl6 ist behoben, aber in Perl5 beim Zugriff auf ein array-Element verwenden müssen genau Dollarzeichen $: $arr[1].

Sich zum letzten Element im array

Beim erstellen eines Arrays @arr erscheint automatisch die Variable $#arr enthält den index des letzten Elements. Beim hinzufügen/löschen von Elementen aus einem array von Werten dieser Variablen ändert sich automatisch (und Sie können sogar selbst notieren Sie die Anzahl der in diese Variable).

Für den Zugriff auf das Letzte Element des Arrays können Sie die Aufnahme $arr[$#arr]. Aber bequemer verwenden $arr[-1]. Index -1 bedeutet der index des letzten Elements im array, index -2 — vorletzten usw.

Der falsche Weg

Hier ist ein Beispiel des Codes (vorsichtig, da Fehler enthalten):

▶ Run
#!/usr/bin/perl

my @arr = ('one', 'two', 'three');

print @arr[1]; # error

Diese Option genauso wie die richtige, aber statt des korrekten Zugriffs auf ein Element des Arrays mit dem $arr[1]hier verwendet @arr[1].

Wenn Sie den Text speichern des Programms in die Datei script.pl und führen Sie es perl script.pl, das auf dem Bildschirm wird der Text two. Zeile 'two', das ist wirklich das Element mit dem index 1 im array @arr, so dass auf den ersten Blick keine Fehler gesehen.

Aber wenn Sie im Programmcode die Zeile use warnings; (was fast immer tun sollte), dann in der Ausgabe des Programms wird vorstehende Warnung:

Scalar value @arr[1] better written as $arr[1] at script.pl line 7.
two

Die Form der Aufnahme @arr[ ] ist die erste von mehreren Werten aus einem array. Das nennt man "Schnitt". Ein paar Beispiele:

  • @arr[1,2] — gibt eine Liste aus zwei Elementen, die Elemente des Arrays mit den Indizes 1 und 2
  • @arr[0..2] — gibt eine Liste aus drei Elementen, die Elemente des Arrays mit den Indizes 0, 1 und 2
  • @arr[1, 1] — gibt eine Liste aus zwei Elementen, wiederholt das Element mit dem index 1 zwei mal

Eintrag @arr[1] — gibt eine Liste aus einem Element, Plus gibt eine Warnung aus.

Aufnahme @arr[1,] — gibt eine Liste aus einem einzigen Element, ohne eine Warnung anzuzeigen.

Wenn Sie den Wert eines Elements aus einem array, dann ist es besser zu schreiben $arr[1].

Verwandte Themen

Andere Artikel