Ich lese das „Beginning Perl“ Buch, und es gibt diese zwei Aussagen:Liste Operator Präzedenz in Perl
print "Test one: ", 6 > 3 && 3 > 4, "\n";
print "Test two: ", 6 > 3 and 3 > 4, "\n";
Die erste Zeile druckt nichts mit einer neuen Zeile, die zweite Zeile druckt ein 1 mit keine neue Zeile
Ich bin verwirrt über die Ausgabe. Nach Ansicht des Autors, gibt die zweite Aussage seltsam ausgegeben, weil es einfach nur sagen, wie ist:
print ("Test two: ", 6 > 3) and 3 > 4, "\n";
Doch warum ist die erste Anweisung nicht das Gleiche? Ich dachte, es hätte etwas mit der Priorität des Drucks zu tun. Die & & hat eine höhere Priorität als der Druck, so dass zuerst ausgewertet und dann gedruckt wird. Während das "und" eine niedrigere Priorität als print hat, wird also 6> 3 gedruckt, print gibt eine 1 zurück, und dann wird das mit "and" ausgewertet. Das macht jedoch keinen Sinn.
Ich habe die Perl-Dokumentation gelesen, wie Vorrang für Listoperatoren funktioniert, aber ich verstehe dieses Beispiel immer noch nicht. Können Sie die beiden Aussagen sezieren und mir sagen, was zuerst gedruckt wird? Kannst du auch erklären, was die Perl-Dokumentation bedeutet, wenn sie Listenoperatoren als "links" und "rechts" bezeichnet? Vielen Dank.
Vielen Dank für Ihre Antworten. Ich verstehe es jetzt. Ich tat tatsächlich, was CJM sagte, und dachte, dass es Links und Rechts-Listen-Operatoren gibt. Jetzt, wo ich verstehe, was es bedeutet, verstehe ich die ganze Sache.
Dieser Code gibt Warnungen aus. und hat sogar Spaß Verhalten in Devel :: REPL – xenoterracide
@xenoterracide, es ist nicht beabsichtigt, gute Perl-Code sein. Es versucht nur zu veranschaulichen, wie die Präzedenz funktioniert. – cjm
@cjm Richtig ... obwohl das Verhalten von re.pl falsch genug für mich schien, um einen Fehler zu melden. wir werden sehen, was daraus wird. – xenoterracide