Ruby tilbyr standard kontrollflyt (if, , ) men med særegne, uttrykksfulle funksjoner: (), , det kraftfulle , og en preferanse for fremfor tradisjonelle løkker. Kontrollflyt i Ruby leser seg naturlig.
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
Rubys modifieringsform (puts "x" if condition) plasserer betingelsen på slutten for konsise, lesbare enlinere. unless (= "hvis ikke") leser seg mer naturlig enn negasjon. Og if er et uttrykk som returnerer en verdi.
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
Rubys case/when er kraftfullt — det matcher verdier, områder, typer, og (i Ruby 3) strukturelle mønstre, ved hjelp av === under panseret. Langt mer fleksibelt enn en basic 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 har while/until, men idiomatisk Ruby foretrekker iterasjon med blokker (each, times, map) fremfor eksplisitte løkker — mer uttrykksfullt og mer Ruby-aktig.
Å forstå Rubys kontrollflyt er fundamental daglig kunskap, og flere særegne funksjoner gjenspeiler Rubys uttrykksfulle, lesbar filosofi.
Modifieringsformen (do_x if condition) og unless (= "hvis ikke") lar deg skrive konsise, engelskaktige betingelser som er idiomatisk Ruby og dukker opp konstant.
Faktumet at if er et uttrykk (som returnerer en verdi) muliggjør elegante tildelinger.
Rubys case/when er særlig kraftfullt — matcher verdier, områder, typer, og (i Ruby 3) strukturelle mønstre via === — noe som gjør det langt mer fleksibelt enn en basic switch og nyttig for ren flerveisgrenking.
Avgjørende er det at idiomatisk Ruby foretrekker iterasjon med blokker (each, times, map, upto) fremfor tradisjonelle for/while-løkker — dette er et definerende stilistisk poeng: Ruby-utviklere itererer samlinger og områder med blokkbaserte metoder fremfor eksplisitte løkker, noe som er mer uttrykksfullt og Ruby-aktig.
Å forstå disse konstruksjonene og idiomene — modifieringsformen og unless for lesbare betingelser, den kraftfulle case/when, og spesielt preferansen for blokkbasert iterasjon fremfor eksplisitte løkker — er viktig for å skrive og lese idiomatisk Ruby.
Ettersom kontrollflyt dukker opp i hvert program, og siden Rubys uttrykksfulle former (modifikatorer, unless, kraftfulle case, blokkiterasjon) gjenspeiler filosofien som fokuserer på lesbarhet, er det å mestre dem essensielt, grunnleggende kunskap for å skrive naturlig, idiomatisk Ruby i stedet for å oversette løkketunge mønstre fra andre språk.