Listen und ArraysEin paar Features von Perl müssen, bevor eine weitere interessante Programme geschrieben werden können abgedeckt werden. Erstens müssen wir Perl "Listen" (oder "Array"). Ein Perl-Liste ist wie ein dynamisches Array-Klasse in C + + oder Java (zB java.util.Vector). Listen verwenden Sie nicht Gegenstand der Perl-Syntax, sondern eine Liste ist im Grunde ein Objekt, das Daten besitzt und die eine zugehörige Gruppe von Funktionen hat. Ein Perl-Liste:
Besitzt eine Sammlung von Datenelementen (in der Regel skalare Werte, aber Sie können Listen von Listen und andere, komplexere Strukturen zu entwickeln, wie in der perldsc. Does (OK, hat ', um sie "getan, da diese nicht Klasse Member-Funktionen): - Erstellen Sie eine Liste, in der Regel initialisiert es mit einem nicht-leere Menge von Datenelementen (wenn auch leere Listen in Ordnung sind). - Hinzufügen von Elementen "vorne" oder "Ende" der Liste. - Entfernen Sie Elemente "vorne" oder "Ende" der Listen. - Zugang Elemente an bestimmten Positionen (diese Funktion gibt es "array' wie Verhaltensweisen sowie Verhaltensweisen Liste). - Liefert die Größe der Sammlung (Länge der dynamischen Array). - Kopieren in ein anderes Feld. Andere Funktionen, um Listen damit zusammenhängenden Funktionen für das Sortieren von Listen und für die Rückgabe Kopien der Listen mit den Elementen in umgekehrter Reihenfolge. Listen Stoffe werden mit dem "@"-Typ-Qualifikationsspiel. Ihre Namen folgen den üblichen Konventionen - Buchstabe, gefolgt von alphanumerischen Zeichen (und einige andere Zeichen in den speziellen Namen für die Listen in der Perl-Kern im Lieferumfang enthalten). Bei der Zusammenstellung Namen der Auffassung, Perl den Unterstrich als einen Brief. Gültig Liste Namen sind: @ @ mylist Ergebnisse inputlines @ @ @ _data list_1 Perl unterhält verschiedene "Namespaces" für die verschiedenen Skalar, Liste und Hash-Datentypen (und andere wie "Datei-Handles"). Sie können einen Skalar $ Ergebnisse und eine Liste @ Ergebnisse, ohne dass Perl keine Verwirrung haben (obwohl Sie möglicherweise eine Wartung unerfahrene Programmierer, die nach dem Code suchen hat stören). Liste Literale werden unterstützt: (1, 2, 3) ( "Tom", "dick", "Harry", "Sue") ($ name, $ address, $ Stadt) Liste Literale werden oft verwendet, um Arrays zu initialisieren. Eine andere Anwendung hat die Liste Literal als ein "L-Wert" (was auf der linken Seite einer Zuweisung). Diese Nutzung wird später gezeigt, es ist ein Feature zur Gewinnung von spezifischen Elemente im Zusammenhang aus einer bestehenden Liste. Einige Beispiele für Listen-Literale werden in der Liste verwendet werden / Array-Erstellung sind: @ PlacesIveBeen = (); # Ich habe noch nirgends gewesen - so, eine leere Liste @ GradePts = (45, 50, 65, 75, 85); @ Städte = ( "London", "Paris", "New York" "Rom", "Tokyo", "Sydney"); @ people = ( "tom", "dick", "Harry", "Sue"); @ TeenYears = (13. .. 19); Die letzte dieser zeigt Perl '..' Bereichsoperator. Dies ist ein kurzer Weg zur Definition der Sammlung (13, 14, 15, 16, 17, 18, 19). Range Operatoren können in 'verwendet werden foreach' iterative Konstrukte - für (1 .. 100); foreach-Schleifen werden später in diesem Artikel erläutert. Da ist es üblich, müssen eine Liste von Wörtern zu initialisieren, Perl hat eine Hilfsfunktion qw () . So könnte haben Sie: @ people = qw (tom dick harry sue); Die qw ()-Funktion ist nicht immer angemessen. Die folgenden Nutzung: @ Städte = qw (London Paris 'New York' Rom Sydney Tokyo); Suchergebnisse in einer Liste, wie: (London, Paris, "New, York, Rom, Tokio, Sydney), die wahrscheinlich nicht das, was beabsichtigt war. Das folgende Codefragment zeigt die Schaffung und Nutzung von einigen Listen. Die Schleifen zeigen verschiedene Möglichkeiten, den Zugriff auf die Liste Elemente: @ Cities1 = ( "London", "Paris", "New York"); # eine Liste mit 3 Elementen @ Cities2 = qw (Rom 'Los Angeles' "San Francisco"); # 5 Elemente! @ Cities3 = ( "Wagga "," Hay "," Cooma "); # wie qq () und q (), qw () können andere Trennzeichen: @ Cities4 = qw \ Thiroul Bellambi Keiraville \; print" Cities1: \ n "; $ size = @ Cities1; for ($ i = 0; $ i <$ size; $ i + +) (print $ Cities1 [$ i], "\ n";) print "Cities1: \ n"; foreach $ Stadt (@ Cities2) (print $ city, "\ n";) print "Cities3: \ n"; foreach $ i (0 .. $ # Cities3) (print $ Cities3 [$ i], "\ n";) print "Cities4: @ Cities4 \ n "; print @ Cities4; Die Zeile $ size = @ Cities1; veranschaulicht die Verwendung eines Arrays in einem "Skalarkontext '; Perl interpretiert dies als einen Antrag für die Länge des Arrays, so $ size nimmt den Wert 3. Die erste for-Schleife ist eine konventionelle zählende Schleife, mit der Loop-Index Index in der verwendeten @ Cities1 Sammlung. Beachten Sie die Städte an $ [$ i]; die Daten hier eingeben, ist eine skalare - wir sind das Extrahieren ein einzelnes Datenelement von der angegebenen Position in der Sammlung. Die zweite und dritte for-Schleifen sind Beispiele für Perl foreach-Schleife zu bauen. Diese Loops haben die Form: foreach (Das Schlüsselwort formay anstelle von foreach, aber foreach ist besser lesbar.) Gewöhnlich Sie eine Variable, die auf das aktuelle Element aus der Liste, aber das ist nicht unbedingt erforderlich. Die erste der foreach-Schleifen in dem Beispiel-Code wollen einfach greift auf die einzelnen der (fünf!) Elemente in $ Cities2, Drucken den Namen der Reihe nach. Die zweite ist eher wie eine Zählung for-Schleife, der Ausdruck $ # Cities3 gibt die (skalare) Wert, der Index für das letzte Element der Liste @ Cities3 ist. Daher ist diese Schleife wirklich foreach $ i (0, 1, 2) (... ); Dieser Schleife wieder verwendet Array Stil Indizierung der Daten Elemente aus der Liste zu extrahieren. Schließlich ist die Liste $ Cities4 ist doppelt gedruckt. Die ersten print-Anweisung hat die Liste in einen String interpoliert, dies gibt die Elemente durch Leerzeichen getrennt. Die endgültigen Ergebnisse print-Anweisung in einer Linie mit allen Daten Elemente in eine lange Zeichenfolge verkettet (nicht eine besonders nützliche Form der Produktion, nur ein weiteres Merkmal der Perl-System). Listen können miteinander verkettet: @ Männlich = qw (Mickey Donald); @ Männlich = qw (Minnie Daisy); @ DisneyMob = (@ Männlich, @ Männlich, "Pluto"); Dies führt zu einer Single-Level-Liste (nicht ein Lisp-ähnliche Liste von Listen): Micky, Donald, Minnie, Daisy, Pluto Arrays können "Scheiben" auf Untergruppen zu geben: @ line = qw (eins zwei drei vier); @ firsttwo = @ line [0,1]; @ line [0,1] = ( "fünf", "sechs"); oder kann Werte geschoben und knallte: @ stack = (); push (@ stack, "one"); push (@ stack, "zwei"); push (@ stack, 3, 4); push (@ stack, 5, 6, 7, 8, " neun ", 101); print @ stack," \ n "; $ val = pop (@ stack); print" @ Stack \ n "; (shift und unshift Arbeit in einer ähnlichen Art und Weise, die an dem zu Beginn und nicht das Ende einer Liste. Sie können auch kombinieren Schieben und Verlagerung usw. so etwas wie eine double-ended Queue.) Die umgekehrte Funktion gibt eine Kopie der Liste zu erreichen mit den Elementen in umgekehrter Reihenfolge. Standardmäßig verwendet die Sortierfunktion eine alphabetische Sortierung, Behandlung Liste aller Elemente als Strings; es wieder eine neue Liste zurück. @ newRevList = reverse (@ eineListe); @ list1 = qw (Dies ist ein Test, was sonst Hallo Welt Hallo Mama etc etc); # Prints als: List1: Dies ist ein Test, was sonst Hallo Welt Hallo Mama etc etc # peform sortieren, dann sortiert Druckliste; Großbuchstaben Platz niedriger als Kleinbuchstaben ... Sortieren nach: Hallo Hallo diese Welt ein anderes etc etc is mom testen, was # Einige numerische Daten @ list2 = (100, 26, 3, 49, -11 , 3001, 78); # Sortierreihenfolge! (Alphabetisch sortiert) nach: -11 100 26 3 3001 49 78 Die Standard-Sortierung Verhalten der alphabetischen Sortierung kann geändert werden, Sie haben Ihre eigene Art Helfer Unterprogramm liefern. Die Helper-Funktionen zum Sortieren sind ein wenig untypisch für benutzerdefinierte Routinen, aber sie sind nicht schwer zu schreiben. Ihre Routine wird aufgerufen werden, um das Ergebnis eines Vergleichs-Operation auf zwei Elemente aus dem Array zurück - diese Elemente wurden in die globalen Variablen gesetzt $ a und $ b vor dem Anruf bei Ihrem Unterprogramm. (Diese Anwendung von spezifischen globalen Variablen macht diese Art von anderen Subroutinen Programmierer-Routinen.) Der folgende Code veranschaulicht die Definition und die Verwendung von einer Art Helfer Unterprogramm "numeric_sort. #! / share / bin / perl-w sub numeric_sort (if ($ a <$ b) (return -1;) elsif ($ a == $ b) (return 0;) else (return 1;)) @ list2 = (100, 26, 3, 49, -11, 3001, 78); @ slist2 = sort @ list2; print "List2 @ list2 \ n"; print "Sortierreihenfolge List2 (Standard-Sortierung) @ slist2 \ n"; @ nlist2 = sort numeric_sort @ list2; print "Sortierreihenfolge List2 (numerische Sortierung) @ nlist2 \ n"; Perl hat eine spezielle Operator <=> für numerische Vergleiche; mithilfe dieses Operators, konnte die numerische Sortierung Funktion vereinfacht werden: Unter numeric_sort (@ a <=> $ b) Perl erlaubt eine Inline-Definition der Art Hilfsfunktionen, so dass Konstrukte wie: @ nlist2 = sort ($ a <=> $ b) @ list2; Ein Artikel eingereicht von Sarah Miller Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle. Wichtig: Dieser Artikel "Listen und Arrays" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.
|
|||||
| Online: 252 users browsing the articles directory |
|
|