A Rubyban vannak úgynevezett vezérlési kifejezések; ezekkel szabályozható, hogyan fusson a program, és truthy vagy falsey értéket vesznek fel. Vannak olyan operátorok, amelyekkel truthy vagy falsey értékeket hozhatunk létre; ezeket összehasonlító operátoroknak nevezzük.
Két fő vezérlési kifejezés szabályozza, hogy melyik kód fusson le és melyik ne. Más szóval, hogy melyik ág fut le.
Ez a kettő: az if és az unless kifejezés.
Az összehasonlító operátorok értékek összehasonlítására szolgálnak, és true vagy false értéket adnak vissza.
A következő operátorok két, azonos típusú értéket várnak összehasonlításra.
Ha az értékek nem azonos típusúak, akkor a fordító hibát dob.
Itt a listája az operátoroknak, és egy példa arra, amikor true értéket adnak:
| Metódus | Leírás | Példa |
|---|---|---|
| < | kisebb, mint | 4 < 5 |
| <= | kisebb vagy egyenlő | 4 <= 4 |
| > | nagyobb, mint | 3 > 1 |
| >= | nagyobb vagy egyenlő | 2 >= 2 |
Az egyenlőség- és nem-egyenlőség-operátorok bármilyen típusú érték összehasonlítására használhatók, ellentétben a fent említett operátorokkal.
Az == operátor azt ellenőrzi, hogy két érték egyenlő-e, és ez magában foglalja az érték típusának ellenőrzését is.
A != ugyanígy működik, de true értéket ad vissza, ha az értékek nem egyenlők, és false-t, ha egyenlők.
Itt a listája az egyenlőség- és nem-egyenlőség-operátoroknak, és egy példa arra, amikor true értéket adnak:
| Metódus | Leírás | Példa |
|---|---|---|
| == | egyenlő | 4 == 4 |
| != | nem egyenlő | 5 != 4 |
A kombinált összehasonlító operátor (amit néha űrhajó-operátornak is neveznek) egy különleges összehasonlító operátor.
Annyiban különleges, hogy nem truthy vagy falsey értéket ad vissza, hanem egy számot.
<=> alakban írjuk, és két érték összehasonlítására szolgál.
1-et ad vissza, ha a bal oldali érték nagyobb a jobb oldalinál, -1-et, ha a bal oldali érték kisebb a jobb oldalinál, és 0-t, ha az értékek egyenlők.
1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1
A if elágazás azt ellenőrzi, hogy egy adott feltétel „truthy” vagy „falsey” értékű-e.
Ha a feltétel truthy, akkor az if elágazáson belüli kód fut le.
Az if elágazás az end kulcsszóval zárul.
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
Az unless elágazás nagyon hasonlóan működik az if elágazáshoz, de akkor futtatja az unless elágazáson belüli kódot, ha a feltétel falsey.
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
Az else elágazás az if elágazással együtt használható.
Az else elágazás akkor fut le, ha az if ág nem fut le.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
else
"1 is not greater than 2"
end
# => "1 is not greater than 2"
Az elsif elágazás az if elágazással együtt használható.
Az elsif elágazás akkor fut le, ha az if ág nem fut le, és az elsif elágazás feltétele truthy.
Az elsif elágazások egymás után fűzhetők, és az első truthy feltétel fut le.
Az if elágazás végén egy else elágazás is állhat, amely akkor fut le, ha a korábbi elágazások egyike sem volt igaz.
value = 1
if value == 0
"1 is equal to 0"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"
Az if és unless elágazás [utótagként][if-as-suffix] is használható; ez akkor hasznos, ha egyetlen sor kódot szeretnél futtatni, amennyiben egy feltétel igaz. Ehhez az if vagy unless elágazást a futtatni kívánt kód után kell írni.
value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1
"1 is not equal to 1" unless value == 1
# => nil