if..elsif..end / unless..end

Ruby unterstützt die if-Anweisung sowohl in der Ausdrucks- als auch in der Ausdrucksmodifzierungsform. unless Bedingung ist äquivalent zur if not Bedingung und zwar in allen Kontexten.

Ein if/unless-Ausdruck liefert den Wert des letzten Ausdrucks.

Block form

Syntax

 if condition [then]
   code
 [elsif condition [then]
   code]
 [else

   code]
 end
 unless condition
   code
 [else

   code]
 end

Erklärung

Die grundlegende Form eines "if" sieht folgendermaßen aus und muß mit end aufhören:

 if some_condition_expression

   # This section executed if some_condition_expression is true
 end

Das Schlüsselwort else kann verwendet werden um einen Bereich zu kennzeichnen, der ausgeführt werden soll, wenn der "if"-Ausdruck nicht zu "wahr" evaluiert wird. Nur ein else darf in einer "if"-Anweisung auftauchen:

 if some_condition_expression
   # This section executed if some_condition_expression is true
 <b3>else</b3>

   # This section executed if some_condition_expression is false
 end

Das Schlüsselwot elsif kann verwendet werden, um mehrere sich gegenseitig ausschließende Bedingungen zu erzeugen. Wenn das initiale if nicht "wahr" ist, werden alle folgenden elsif in absteigender Reihenfolge solange ausgewertet, bis eines zu "wahr" evaluiert werden kann. Wenn keines als "wahr" evaluiert wird, wird die else-Sektion verwendet, sofern eine vorhanden ist:

 if cond_one

   # cond_one is true
 elsif cond_two
   # cond_one is not true and cond_two is true
 elsif cond_three
   # cond_one is not true and cond_two is not true and cond_three is true
 else
   # cond_one, cond_two and cond_three are all not true
 end

Bei unless, kann nur else, aber nicht elsif verwendet werden.

Die if-Anweisung kann ein then haben, aber das wird normalerweise weggelassen.

 if some_condition_expression then
   # ...
 elsif some_other_condition_expression then

   # ...
 end

Soll die "if"-Anweisung auf eine Zeile beschränkt werden, muß then verwendet werden.

 if some_condition_expression then do_something end