A Ruby szabványos vezérlési folyamatot kínál (, , ), de különleges, kifejező jellemzőkkel: (), , a hatékony , és az való preferálása a hagyományos ciklusok helyett. A Ruby vezérlési folyamata természetesnek olvasható.
ifcasewhiledo_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
A Ruby módosító formája (puts "x" if condition) a feltételt az utolsó helyre helyezi, hogy tömör, olvasható egysoros parancsokat kínáljon. Az unless (= "ha nem") természetesebben olvasható, mint a negáció. És az if egy kifejezés, amely értéket ad vissza.
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
A Ruby case/when hatékony — értékeket, tartományokat, típusokat és (Ruby 3-ban) strukturális mintákat illeszt, a === operátor használatával. Sokkal rugalmasabb, mint egy alapvető 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| ... }
A Ruby rendelkezik while/until ciklusokkal, de az idiomatikus Ruby blokkokon keresztüli iterációt részesíti előnyben (each, times, map) az explicit ciklusok helyett — kifejezőbb és Rubyhoz inkább illő.
A Ruby vezérlési folyamatának megértése alapvető mindennapi tudás, és számos különleges jellemzője a Ruby kifejező, olvasható filozófiáját tükrözi.
A módosító forma (do_x if condition) és az unless (= "ha nem") lehetővé teszik tömör, angol nyelvhez hasonló feltételek írását, amelyek idiomatikus Ruby és folyamatosan megjelennek.
Az a tény, hogy az if kifejezés (értéket adó vissza) lehetővé teszi az elegáns hozzárendeléseket.
A Ruby case/when figyelemreméltóan hatékony — értékeket, tartományokat, típusokat és (Ruby 3-ban) strukturális mintákat illeszt a === operátor segítségével — amely sokkal rugalmasabb, mint egy alapvető switch, és hasznos az egyértelmű többirányú elágazásokhoz.
Lényegesen, az idiomatikus Ruby blokk alapú iterációt részesít előnyben (each, times, map, upto) a hagyományos for/while ciklusok helyett — ez a meghatározó stilisztikai pont: a Ruby fejlesztők gyűjteményeket és tartományokat blokk alapú metódusokkal iterálnak az explicit ciklusok helyett, amely kifejezőbb és Rubyhoz inkább illő.
Ezeknek az elemeknek és idiómáknak a megértése — a módosító forma és unless az olvasható feltételekhez, a hatékony case/when, és különösen a blokk alapú iteráció preferálása az explicit ciklusok helyett — fontos az idiomatikus Ruby írásához és olvasásához.
Mivel a vezérlési folyamat minden programban megjelenik, és mivel a Ruby kifejező formái (módosítók, unless, hatékony case, blokk iteráció) az olvashatóság-fókuszú filozófiáját testesítik meg, az elsajátításuk alapvető, nélkülözhetetlen tudás az természetes, idiomatikus Ruby írásához ahelyett, hogy hurok-intenzív mintákat fordítanánk más nyelvekből.