Aufgrund meiner Erfahrung mit modernen Programmier- und Skriptsprachen glaube ich, dass die meisten Programmierer im Allgemeinen daran gewöhnt sind, das erste Element eines Arrays mit zu bezeichnen als Index.
Gibt es wesentliche Vorteile bei der Verwendung von 1 ?
Ich bin mir sicher, dass ich von mehr Sprachen als Zsh gehört habe, die sich ähnlich mit Arrays verhalten; Für mich ist das in Ordnung, da es genauso praktisch ist.
Da jedoch zuvor veröffentlichte und weit verbreitete Shell-Skriptsprachen wie ksh und bash alle 0 verwenden, warum würde jemand diesen gemeinsamen „Standard“ ändern?
Meine sofortige Antwort auf meine Frage wäre „natürlich nicht“;
dann wäre die einzige Erklärung, die mir in Bezug auf dieses etwas „exklusive Merkmal“ von Granaten einfällt, „sie haben das nur getan, um anzugeben etwas mehr ihre coole Hülle “.
Ich weiß jedoch nicht viel über Zsh oder seine Geschichte, und es besteht eine hohe Wahrscheinlichkeit, dass meine triviale Theorie darüber keinen Sinn ergibt.
Gibt es dafür eine Erklärung? Oder ist es nur aus persönlichem Geschmack?
Akzeptierte Antwort:
- Praktisch alle Shell-Arrays (Bourne, csh, tcsh, fish, rc, es, yash) beginnen bei 1. ksh ist die einzige Ausnahme, die ich kenne (bash hat gerade ksh kopiert).
- Zu dieser Zeit (Anfang der 90er) am häufigsten interpretierte Sprachen:
awk
,tcl
zumindest und Tools, die normalerweise von der Shell verwendet werden (cut -f1-3
,head -n 3
,sortieren -k1,3
,Kal. 1 2015
,comm -1
) beginnen bei 1.sed
,ed
,vi
nummerieren Sie ihre Zeilen von 1… - zsh nutzt das Beste aus der Bourne-Shell und csh. Das Bourne-Shell-Array
[email protected]
Beginnen Sie bei 1. zsh ist konsistent mit der Handhabung von[email protected]
(wie in Bourne) oder$argv
(wie in csh). Sehen Sie, wie verwirrend es inksh
ist wobei${@:0:1}
gibt Ihnen zum Beispiel nicht den ersten Positionsparameter. - Eine Shell ist ein Benutzerwerkzeug, bevor sie eine Programmiersprache ist. Für die meisten Benutzer ist es sinnvoll, die erste zu haben -Element in
$a[1][code> . Es bedeutet auch, dass die Anzahl der Elemente gleich dem letzten Index ist (in zsh, wie in den meisten anderen Shells außer ksh, sind Arrays nicht spärlich).
a[1][code> denn das erste Element ist konsistent mit
a[-1]
zum Schluss.
Die Frage sollte meiner Meinung nach also eher lauten:was ist David Korn in den Kopf gekommen, um seine Arrays bei 0 beginnen zu lassen?