Warum Perl die logischen Operatoren &&, ||, ! Vorrang vor und, oder und nicht?
Dies ist wahrscheinlich ein kleiner Punkt, aber ich Frage mich, warum der Perl-logische Operatoren (&&
, ||
, und !
) haben Vorrang vor den leicht verständlichen "Englisch" logische Operatoren (and
, or
und not
). Gibt es irgendeinen Vorteil bei der Verwendung des ehemaligen festgelegt und jeder Nachteil bei der Verwendung des letzteren in einem Skript?
- Denn Larry Wall hat es gefallen, dass Art und Weise?
- Wenn Sie waren identisch in der Präferenz, es wäre nicht notwendig, beide Versionen behalten - nur eine wäre genug, um zu halten. Seit Larry ist ein linguist und gerne einfache englische Worte in seine neue Sprache, führte er diese (neben der
unless
und andere). Und natürlich, er zugewiesene Bedeutung dieser Worte, dass er besser gefallen (und noch andere, die von C-Stil-Operatoren)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
||
undor
hatte die gleiche Rangfolge, dannbedeuten würde
statt
oder
bedeuten würde
statt
Weder dieser Veränderungen sind wünschenswert.
Und zwar könnte man die Debatte
or
ist leichter zu verstehen als||
, es ist schwerer zu Lesen. Es ist leichter zu Lesen code, wenn die Betreiber nicht so Aussehen wie Ihre Operanden.Original
&&
,||
und!
Betreiber hohe Priorität entsprechend der C-Sprache.Den neueren (aber noch alte)
and
,or
undnot
Operatoren Hinzugefügt wurden zur Vereinfachung einige gemeinsame Konstrukte. Vergleichen Sie zum Beispiel:Der erste ist falsch, der hohe Priorität
||
bindet mit$filename
unddie
ist nicht, was Sie wollen. Das zweite ist richtig; die geringe Prioritätor
bedeutet, dass die fehlende Klammern nicht zu Doppeldeutigkeiten führen.Logischen Vorrang und die Klarheit
Während ich habe keine Ahnung, ob dies der Grund war, dass Sie in der Sprache, Sie sind unglaublich nützlich für das schreiben von klaren code,
Wir können dies im code, auch mit
\n
. Keine lauten parens benötigt.Anders wäre dies zu sein haben,
Aber perl mag es nicht, alle, die line-Lärm, die anderen Sprachen, die Kraft auf seine Nutzer.
konvertieren Kommentar zu einer Antwort:
Wenn diese Operatoren waren identisch in der Präferenz, es wäre nicht notwendig, beide Versionen behalten - wenn nur eine version ausreichen würde.
Aber Larry Wall ist ein linguist, und er mochte wirklich zu verwenden einfache englische Worte in seiner neuen Sprache. So führte er diese im englischen Stil-Betreiber (neben der
unless
und andere).Zu halten, die C-Stil-Operatoren und Ihre klassische Bedeutung, die er benötigt, um die neuen keywords nicht redundant. Deshalb beauftragte er etwas andere Bedeutung dieser Operatoren, dass er besser gefallen. Also, der Unterschied erwies sich die Operatorrangfolge.
and
undor
enthalten waren neben&&
und||
rein zu bieten identische Operatoren mit geringer Bindung Priorität. Sie sind besonders nützlich in Perl, weil Funktionsaufrufe benötigen keine Klammern um die Parameter.and
undor
würde heute nicht existieren. Und im englischen Stil Konstrukte sicherlich bieten mehr Flexibilität, ich bin nicht bestreiten, dass entweder