Ich bin Neuling in Perl
und ich lese über Arrays.
Wie ich verstehe, die Arrays automatisch erweitern wie benötigt (cool!)
Aber ich lese auch, dass wir negative Indizes verwenden können, um auf die Arrays in umgekehrter Reihenfolge zuzugreifen.
Zum Beispiel
$array[0] $array[1] $array[2]
oder
$array[-1] $array[-2] $array[-3]
(in umgekehrter Reihenfolge): Ein Array von 3 Elementen kann als zugegriffen werden.
Meine Frage ist, was passiert für Werte kleiner als -3
z. ?
Erweitert sich das Array oder etwas?Arrays und negative Indizes in Perl
Antwort
Wenn Sie es lesen, ist das Ergebnis das gleiche wie $array[5]
Lesen - der Wert existiert nicht und du bekommst ein undef heraus. Vom Ende nach links zu gehen und vom Ende nach rechts zu gehen, ist dasselbe.
Wenn Sie es schreiben, erhalten Sie einen Fehler. Arrays können nur automatisch nach rechts erweitert werden.
Ich habe eine spezielle Perl-Version, bei der mir meine Arrays zuerst das Null-Ende geben. Sie können sich nur automatisch von mir entfernen. – Borodin
Sie können nicht, den Fehler auslöst:
Modifikation von nicht-creatable Array-Wert versucht, Index -2
Sie erhalten einen undef Wert, wenn Sie den Wert lesen.
use strict;
use warnings;
my @l = qw(A B C);
print $l[-4];
Ausgabe auf stderr (Programm läuft weiter):
Use of uninitialized value in print at ./x.pl line 7.
Oder:
my @l = qw(A B C);
print "undef" if !defined $l[-4];
Ausgang:
undef
Wenn Sie möchten einen Wert zuweisen Sie erhalten einen Fehler:
my @l = qw(A B C);
$l[-4] = "d";
Ausgang (Programm beendet):
Modification of non-creatable array value attempted, subscript -4 at ./x.pl line 7.
Und tatsächlich kann das Intervall geändert werden. So kann ein Array einen beliebigen Wert beginnen nicht nur 0.
my @l = qw(A B C);
$[ = -4; # !!! Deprecated
print $l[-4], "\n";
print $l[-3], "\n";
Ausgang:
A
B
- 1. Wie implementiert man negative Indizes in Java?
- 2. Konkurrierende Arrays und Indizes erhalten
- 3. Sind negative Array-Indizes in C zulässig?
- 4. Ramda Indizes in verschachtelten Arrays
- 5. Darstellen von 2d Leerzeichen von unbestimmter Größe mit JS-Arrays - negative Indizes?
- 6. Perl vergleichen Elemente von Arrays und Gruppierung
- 7. Perl: Umgang mit Arrays und Array-Referenzen
- 8. Ich möchte Indizes eines Arrays in eine anhängen, wo Auswahloptionen Indizes des Arrays sind
- 9. Perl übergeben 3D-Hash-Indizes als Strings
- 10. Auspacken Tupeln/Arrays/Listen als Indizes für Numpy Arrays
- 11. Entfernen Sie allgemeine Indizes des Arrays
- 12. Python Argsort Indizes basierend auf mehreren Arrays
- 13. Wie werden Arrays in Perl implementiert?
- 14. 2 Arrays in einer einzigen foreach - perl
- 15. Zufällige und negative Zahlen
- 16. Sortieren ein Array von Arrays von verschiedenen Indizes in C
- 17. Finden Indizes entsprechende Zeilen in zwei 2-D-Arrays
- 18. Finde Indizes von gemeinsamen Werten in zwei Arrays
- 19. Indizes für die sortierte Permutation eines Arrays in Ruby erhalten?
- 20. Wie funktioniert O = Deparse, und hat Perl konstante Arrays?
- 21. Die Indizes eines Sub-Arrays in einem Array zurückgeben
- 22. Unterschied von zwei Arrays mit Perl
- 23. Regex - Mehrere negative Lookbehinds
- 24. Array von Indizes nehmen, passende Indizes in einem anderen Array finden und Werte ersetzen
- 25. Perl - Zeilen eines Arrays unter Bedingungen entfernen
- 26. negative Lookbehind und gierige Quantifikatoren in PHP
- 27. translate3d zwischen 0% und negative% in IE10
- 28. Compiler und negative Zahlen Darstellungen
- 29. Sharding und Indizes
- 30. Indizes und Optimierung
Testen Sie es aus. Diese Art von Fragen sind gut für dich, um selbst zu trainieren. – chrsblck
warum versuchst du es nicht einfach? – marcadian
Ich kann es ausprobieren, aber ich versuche, das Speichermodell zu verstehen, wenn das in Perl Sinn macht. Wenn ich nicht die Frage – Cratylus