Ruby inatoa control-flow ya kawaida (if, , ) lakini ikiwa na vipengele vya kipekee, vyenye uwazi: (), , yenye nguvu, na upendeleo wa badala ya loops za jadi. Control flow katika Ruby husomeka kwa asili.
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
Modifier form ya Ruby (puts "x" if condition) inaweka condition mwishoni kwa one-liners mfupi, zinazosomeka. unless (= "if not") husomeka kwa asili zaidi kuliko negation. Na if ni expression inayorudisha thamani.
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 ya Ruby ina nguvu — inalinganisha values, ranges, types, na (katika Ruby 3) structural patterns, ikitumia === chini ya pazia. Inayobadilika zaidi kuliko switch ya msingi.
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 ina while/until, lakini Ruby ya kiidiomu inapendelea iteration kwa blocks (each, times, map) badala ya loops za wazi — yenye uwazi zaidi na ya kifani-Ruby.
Kuelewa control flow ya Ruby ni maarifa ya msingi ya kila siku, na vipengele kadhaa vya kipekee vinaonyesha falsafa yenye uwazi, inayosomeka ya Ruby.
Modifier form (do_x if condition) na unless (= "if not") zinakuwezesha kuandika conditionals mfupi, zinazofanana na Kiingereza ambazo ni Ruby ya kiidiomu na hujitokeza mara kwa mara.
Ukweli kwamba if ni expression (inayorudisha thamani) huwezesha assignments za kuvutia.
case/when ya Ruby ina nguvu hasa — ikilinganisha values, ranges, types, na (katika Ruby 3) structural patterns kupitia === — ikiifanya iwe inayobadilika zaidi kuliko switch ya msingi na yenye manufaa kwa branching ya njia-nyingi safi.
Kwa muhimu, Ruby ya kiidiomu inapendelea iteration kwa blocks (each, times, map, upto) badala ya loops za jadi za for/while — hii ni hoja ya kimtindo ya kufafanua: wendelezaji wa Ruby hu-iterate mikusanyiko na ranges kwa methods za block-based badala ya loops za wazi, ambazo ni za uwazi zaidi na za kifani-Ruby.
Kuelewa miundo hii na idioms — modifier form na unless kwa conditionals zinazosomeka, case/when yenye nguvu, na hasa upendeleo wa iteration ya block-based juu ya loops za wazi — ni muhimu kwa kuandika na kusoma Ruby ya kiidiomu.
Kwa kuwa control flow hujitokeza katika kila programu, na kwa kuwa fomu zenye uwazi za Ruby (modifiers, unless, case yenye nguvu, iteration ya block) zinajumuisha falsafa yake inayolenga usomekaji, kuzimudu ni maarifa muhimu, ya msingi kwa kuandika Ruby ya asili, ya kiidiomu badala ya kutafsiri patterns zenye loops nyingi kutoka lugha nyingine.