Ruby nabízí standardní řízení toku (if, , ), ale s charakteristickými, expresivními vlastnostmi: (), , výkonný a preferenci pro místo tradičních smyček. Řízení toku v Ruby se čte přirozeně.
casewhiledo_x if conditionunlesscase/whenif age >= 18
puts "adult"
elsif age >= 13
puts "teen"
else
puts "child"
end
# MODIFIER form — condition at the END (reads like English, idiomatic for short cases)
puts "adult" if age >= 18
puts "minor" unless age >= 18 # `unless` = if not (more readable than `if !`)
# everything is an expression — if returns a value
grade = if score >= 90 then "A" else "B" end
Ruby modifikátorová forma (puts "x" if condition) umisťuje podmínku na konec pro stručné, čitelné jednořádkové příkazy. unless (= "pokud ne") se čte lépe než negace. A if je výraz, který vrací hodnotu.
case status
when :active then "running"
when :stopped, :paused then "halted" # multiple values
when 1..10 then "small number" # ranges
when String then "it's a string" # types (uses ===)
else "unknown"
end
# case can also do structural pattern matching (Ruby 3)
case data
in { name: String => name, age: Integer } # pattern matching with destructuring
puts name
end
Ruby case/when je výkonný — shoduje se s hodnotami, rozsahy, typy a (v Ruby 3) strukturálními vzory pomocí ===. Mnohem flexibilnější než základní switch.
while count < 10 do count += 1 end
until done do ... end # until = while not
# ✅ but Ruby PREFERS iteration with blocks over explicit loops:
5.times { |i| puts i } # instead of a for loop
[1, 2, 3].each { |n| puts n } # iterate a collection
(1..10).each { |n| ... } # iterate a range
1.upto(5) { |i| ... }
Ruby má while/until, ale idiomatické Ruby preferuje iteraci s bloky (each, times, map) před explicitními smyčkami — více expresivní a Ruby-like.
Rozvíjet porozumění řízení toku Ruby je základní každodenní znalostí, a několik charakteristických vlastností odráží Ruby filosofii expressivity a čitelnosti.
Modifikátorová forma (do_x if condition) a unless (= "pokud ne") vám umožňují psát stručné, anglicky zní podmínky, které jsou idiomatické Ruby a objevují se neustále.
Skutečnost, že if je výraz (vrací hodnotu), umožňuje elegantní přiřazení.
Ruby case/when je pozoruhodně výkonný — shoduje se s hodnotami, rozsahy, typy a (v Ruby 3) strukturálními vzory přes === — což jej činí daleko flexibilnějším než základní switch a užitečným pro čistou vícecestnou rozvětvení.
Klíčově, idiomatické Ruby preferuje iteraci s bloky (each, times, map, upto) před tradičními for/while smyčkami — toto je definující stylový bod: Ruby vývojáři iterují kolekce a rozsahy metodami založenými na blocích, nikoli explicitními smyčkami, což je expresivnější a Ruby-like.
Rozvíjet tyto konstrukty a idiomy — modifikátorovou formu a unless pro čitelné podmínky, výkonný case/when a zejména preferenci pro iteraci založenou na blocích před explicitními smyčkami — je důležité pro psaní a čtení idiomatického Ruby.
Protože řízení toku se objevuje v každém programu, a protože Ruby expresivní formy (modifikátory, unless, výkonný case, iterace přes bloky) ztělesňují filozofii zaměřenou na čitelnost, jejich zvládnutí je nezbytnou, základní znalostí pro psaní přirozeného, idiomatického Ruby, místo aby se překládaly těžko smyčkované vzory z jiných jazyků.