Christian Kruse: nochmal zum Thema if/elsif/else

Beitrag lesen

Hallo Alain,

Wenn die Bedingung im ersten if() fehlschlaegt wird der Reihe nach das elsif()
ausgefuehrt, bis auf eine Bedingung getroffen wird, die passt.

hmmm,komisch,so nachdem was ich gelesen habe,dachte ich eher umgekehrt,wenn das erste
if fehlschlägt dann werden die elsif übersprungen?!

Nein.

ckruse@skuld latex $ perl test.pl
if
elsif 1
ckruse@skuld latex $ cat test.pl
#!/usr/bin/perl -w

if(1) {
  print "if\n";
}
elsif(1) {
  print "elsif 1\n";
}
elsif(1) {
  print "elsif 2\n";
}
else {
  print "else\n";
}

if(0) {
  print "if\n";
}
elsif(1) {
  print "elsif 1\n";
}
elsif(1) {
  print "elsif 2\n";
}
else {
  print "else\n";
}

eof

ckruse@skuld latex $

Aber warum probierst du das nicht einfach selber aus?

Das ist semantisch ein Unterschied. Hier werden in jedem Fall alle if() ausgewertet.
Aequivalent waere das so:

if() {
}
else {
  if() {
  }
  else {
    if() {
    }
    else {
      if() {
      }
      else {
      }
    }
  }
}

und wenn man das so schreibt:

if (){
if () {
if () {
mach was
}}}
else {
sonst das
}

Ist das zwar syntaktisch richtig, aber semantisch was anderes.

ich dachte das wäre dasselbe wie elsif für die zwei unteren ifs?

Nee.

Grüße,
 CK

--
No Shoes On Mat!
http://wwwtech.de/