Mehrere for-Schleifen abschliessendes Semikolon "optional"

Begonnen von TomLee, 08 August 2024, 17:22:02

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

hab ich ein grundsätzliches Verständnisproblem oder frage ich zurecht warum man bei der Verwendung von mehreren for-Schleifen hintereinander diese nicht unbedingt mit Semikolon abschliessen muss ?

Ich frage wegen der zwei Schleifen hier im notify. Ich hab das nachvollzogen und der Schnipsel wird akzeptiert (und funzt) mit und ohne Semikolon (und beliebig vielen weiteren Schleifen)

Kann hier bitte wer ein paar Worte dazu sagen ?

Gruß

Thomas


Hat es was was mit den geschweiften Klammern zu tun ?

Christoph Morrison

Du brauchst Semikola nur dann, wenn du ein simple statements abschließen möchtest (außer es ist das letzte in einem Block, dann brauchst du keines). for ist ein compound statement und da funktionieren die Akkoladen (so werden die geschweiften Klammern genannt) als Blockbegrenzer.

Setzt du hinter einen Block ein Semikolon ist das einfach ein leeres simple statement hinter einem Block. Du kannst tausend leere simple statements machen, jedes davon wird wegoptimiert.

for (;;) {
# Ich bin ein compound statement und brauche kein Semikolon. Mich kannst du nicht wegoptimieren, denn ich laufe für immer. Checkmate, parser
}

my $foo = bar; # Ich bin ein simple statement und benötige ein Semikolon

; # Ich bin ein leeres simple statement und werde vom Parser wegoptimiert

sub {
# Ich bin ein Term und benötige ein Semikolon
};

FOO: {
# Ich bin auch ein Block und benötige kein Semikolon, werde aber leider wegoptimiert
}


Weiteres findest du hier: perlsyn

TomLee

Vielen dank für die schnelle, kurze Erklärung, den Stichworten und Link.