Podmíněné rozvětvení
Ruby může ovládat vykonávání kódu používáním podmíněného rozvětvení. Podmíněné rozvětvení bere v úvahu výsledek zkušebního výrazu a vykonává blok kódu v závislosti zda zkušební výraz je pravda nebo nepravda.Jestli zkušební se výraz vyhodnotí do false nebo nil, test je nepravda, jinak to je pravda. Všimněte si , že číselná nula je považovaná za pravdu, zatímco mnoho jiných programovacích jazyků je to nepravda.
V mnoha populárních programovacích jazycích, jsou podmíněné rozvětvení pouze sdělení. Mohou ovlivnit který kód je vykonaný, ale nevyplývají z nich hodnoty samy. V Ruby, ať tak nebo onak, podmíněné rozvětvení jsou výrazy. Ohodnotí hodnoty, právě to jako další výrazy dělají. Jestli výraz, například, nejen určuje zda vykoná vedlejší blok kódu, má to za následek hodnotu samotnou. Například, následující jestli výraz ohodnocuje 3:
if true
3
end
Ruby podmíněné rozvětvení podrobněji si vysvětlíme dále.
Výraz if
Příklady:
a = 5
if a == 4
a = 7
end
print a# tiskne 5 dokud není vykonán if blok
Můžete také dát zkušební výraz a blok kódu na stejný řádek pokud vám to vyhovuje:
if a == 4 then a = 7 end
Toto se rovná:
a = 5
a = 7 if a == 4
print a # tiskne 5 dokud není vykonán if blok
Výraz unless
Výraz unless je opačný if, blok příkazů se provádí pokud není podmínka splňena.
Příklady:
a = 5
unless a == 4
a = 7
end
print a # tiskne 7 dokud není vykonán blok
Výraz unless je přesně to samé jako negované if:
if !vyraz # je to same jako
unless vyraz
Stejně jako s if můžete tedy napsat:
a = 5
a = 7 unless a == 4
print a # tiskne 7 dokud není vykonán blok
Výraz if-elsif-else
Elsif (všímněte si, že to je elsif a ne elseif) a else bloky vám dají další kontrolu nad vašimi skripty poskytováním volby k tomu, aby vyhověla dodatečným zkouškám. Můžete mít libovolné množství elsif bloků ale jen jeden blok else.
Syntaxe:
if výraz
...blok kódu...
elsif další výraz
...blok kódu...
elsif další výraz
...blok kódu...
else
...blok kódu...
end
Výraz short-if
"short-if" poskytuje skladný způsob hodnocení výrazu a vrácení hodnoty. Toto je velmi užitečné při spojování řětězců kromě jiného.
Příklad:
a = 5
plus_or_minus = '+'
print "The number+1 is: " + (plus_or_minus == '+' ? (a+1).to_s : (a-1).to_s) + "."
Toto [? (výraz) :(výraz)] je také známý jako termární operátor. Doporučuji vám použít této syntaxe jen pro menší úkoly, jako string formátování, kvůli chudé kódové čitelnosti která z toho může vyplývat.
irb(main):037:0> true ? ' t ' :' f '
=> "t"
irb(main):038:0> false ? ' t ' :' f '
=> "f"
Smyčky
while
while v Ruby je velmi podobné if a v dalších jazycích while (syntakticky):
while <výraz>
<...blok kódu...>
end
Kódový blok bude vykonaný stále znovu, dokud výraz bude pravda.
Také následující zápis je možný:
<...kód...> while <výraz>
Všimněte si následující relativně divný zápis funguje...
linka = inf.readline while line != "co hledas"
Tak jestli linka, lokální proměnná nemá žádnou existenci před touto linkou, bude mít tento výraz po prvním průchodu hodnotu nil.