Ruby oferă control-flow standard (if, , ) dar cu caracteristici distinctive și expresive: (), , puternic și o preferință pentru peste buclele tradiționale. Control flow în Ruby se citește natural.
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
Forma modificator Ruby (puts "x" if condition) pune condiția la sfârșit pentru one-liners concise și lizibile. unless (= "dacă nu") se citește mai natural decât negația. Și if este o expresie care returnează o valoare.
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
case/when puternic al Ruby — potrivește valori, intervale, tipuri și (în Ruby 3) pattern-uri structurale, folosind === sub capotă. Cu mult mai flexibil decât un switch de bază.
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 are while/until, dar Ruby idiomativ preferă iterația cu blocuri (each, times, map) peste buclele explicite — mai expresiv și Ruby-like.
Înțelegerea control-flow-ului Ruby este cunoaștere fundamentală zilnică, și mai multe caracteristici distinctive reflectă filosofia expresivă și lizibilă a Ruby.
Forma modificator (do_x if condition) și unless (= "dacă nu") te lasă să scrii conditionale concise și de tip English care sunt Ruby idiomativ și apar constant.
Faptul că if este o expresie (returnând o valoare) permite atribuiri elegante.
case/when puternic al Ruby — potrivind valori, intervale, tipuri și (în Ruby 3) pattern-uri structurale via === — îl face cu mult mai flexibil decât un switch de bază și util pentru ramificări curate multi-cale.
Crucial, Ruby idiomativ preferă iterația cu blocuri (each, times, map, upto) peste buclele tradiționale for/while — acesta este un punct stilistic definitor: dezvoltatorii Ruby iterează colecții și intervale cu metode bazate pe blocuri mai degrabă decât bucle explicite, ceea ce este mai expresiv și Ruby-like.
Înțelegerea acestor construcții și idiomuri — forma modificator și unless pentru conditionale lizibile, case/when puternic și în special preferința pentru iterație bazată pe blocuri peste buclele explicite — este importantă pentru scrierea și citirea Ruby idiomativ.
Deoarece control flow apare în fiecare program, și deoarece formele expresive ale Ruby (modificatori, unless, case puternic, iterație cu blocuri) încorporează filosofia ei axată pe lizibilitate, stăpânirea lor este cunoaștere esențială, fundamentală pentru scrierea Ruby natural și idiomativ mai degrabă decât traducerea pattern-urilor cu bucle grele din alte limbaje.