Ruby tilbyder standard kontrolflow (if, , ), men med karakteristiske, udtrykfulde funktioner: (), , den kraftfulde , og en præference for frem for traditionelle løkker. Kontrolflow i Ruby læses naturligt.
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 modifierform (puts "x" if condition) placerer betingelsen til sidst for koncise, læsbare one-liners. unless (= "hvis ikke") læses mere naturligt end negation. Og if er et udtryk, der returnerer en værdi.
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 kraftfuld — den matcher værdier, områder, typer og (i Ruby 3) strukturelle mønstre ved hjælp af === under motorhjelmen. Meget mere fleksibel end en grundlæggende 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 foretrækker iteration med blokke (each, times, map) frem for eksplicitte løkker — mere udtrykfuld og Ruby-agtig.
At forstå Rubys kontrolflow er fundamental daglig viden, og flere karakteristiske funktioner afspejler Rubys udtrykfulde, læsbare filosofi.
Modifierformen (do_x if condition) og unless (= "hvis ikke") lader dig skrive koncise, engelskagtige betingelser, der er idiomatisk Ruby og optræder konstant.
Det faktum, at if er et udtryk (der returnerer en værdi), muliggør elegante tildelinger.
Rubys case/when er bemærkelsesværdig kraftfuld — matcher værdier, områder, typer og (i Ruby 3) strukturelle mønstre via === — hvilket gør det langt mere fleksibelt end en grundlæggende switch og nyttigt til ren fler-vejs-forgrening.
Krucielt foretrækker idiomatisk Ruby iteration med blokke (each, times, map, upto) frem for traditionelle for/while løkker — dette er et definerende stilistisk punkt: Ruby-udvikler itererer samlinger og områder med blok-baserede metoder snarere end eksplicitte løkker, hvilket er mere udtrykfuldt og Ruby-agtigt.
At forstå disse konstruktioner og idiomer — modifierformen og unless for læsbare betingelser, den kraftfulde case/when, og især præferencen for blok-baseret iteration frem for eksplicitte løkker — er vigtigt for at skrive og læse idiomatisk Ruby.
Da kontrolflow optræder i ethvert program, og da Rubys udtrykfulde former (modifierer, unless, kraftfuld case, blok iteration) repræsenterer dets læsbarhedscentrerede filosofi, er det at mestre dem væsentlig, fundamental viden for at skrive naturlig, idiomatisk Ruby i stedet for at oversætte løkke-tunge mønstre fra andre sprog.