Ruby tarjoaa vakiolauseet (if, , ), mutta niillä on erityisiä, ilmaisukykyisiä ominaisuuksia: (), , tehokas , ja preferenssi perinteisten silmukoiden sijaan. Kontrollivirta Rubyssä luetaan luonnollisesti.
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
Rubyn muuntajamuoto (puts "x" if condition) asettaa ehdon loppuun ytimekköille, luettaville yhden rivin lauseille. unless (= "jos ei") luetaan luonnollisemmin kuin negaatio. Ja if on lauseke, joka palauttaa arvon.
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
Rubyn case/when on tehokas — se yhdistää arvoja, alueita, tyyppejä ja (Ruby 3:ssa) rakenteellisia kuvioita käyttäen ===-operaattoria. Paljon joustavampi kuin perus-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| ... }
Rubyllä on while/until, mutta idiomatinen Ruby suosii iteraatiota lohkoilla (each, times, map) nimenomaisista silmukoista — ilmaisuvoimaisempaa ja Ruby-maista.
Rubyn kontrollivirran ymmärtäminen on perustavanlaatuista päivittäistä tietoa, ja useat erilaiset ominaisuudet kuvastavat Rubyn ilmaisukykyistä, luettavaa filosofiaa.
Muuntajamuoto (do_x if condition) ja unless (= "jos ei") antavat sinulle mahdollisuuden kirjoittaa ytimekkäitä, englanninkielisiä ehdollisia lauseita, jotka ovat idiomatista Rubya ja näkyvät jatkuvasti.
Se, että if on lauseke (palauttaa arvon), mahdollistaa elegantin muuttujien sijoituksen.
Rubyn case/when on merkittävän tehokas — yhdistää arvoja, alueita, tyyppejä ja (Ruby 3:ssa) rakenteellisia kuvioita ===-operaattorilla — mikä tekee siitä paljon joustavamman kuin perus-switch-lauseen ja hyödyllisen selkeälle monikaarreiselle haarautumiselle.
Ratkaisevasti idiomatinen Ruby suosii iteraatiota lohkoilla (each, times, map, upto) perinteisten for/while-silmukoiden sijaan — tämä on määrittelevä tyylillinen seikka: Ruby-kehittäjät iteroivat kokoelmia ja alueita lohkopohjaisten menetelmien avulla nimenomaisista silmukoista, mikä on ilmaisuvoimaisempaa ja Ruby-maista.
Näiden rakenteiden ja idiomien ymmärtäminen — muuntajamuoto ja unless luettaville ehdollisille lauseille, tehokas case/when ja erityisesti preferenssi lohkopohjaisen iteraation puolesta nimenomaisista silmukoista — on tärkeää idiomatisen Rubyn kirjoittamiselle ja lukemiselle.
Koska kontrollivirta näkyy jokaisessa ohjelmassa, ja koska Rubyn ilmaisulliset muodot (muuntajat, unless, tehokas case, lohkoiteraatio) heijastavat sen luettavuuskeskeistä filosofiaa, niiden hallitseminen on olennaista, perustavanlaatuista tietoa luonnollisen, idiomatisen Rubyn kirjoittamiselle eikä silmukkaintensiivisien kuvioiden kääntämiselle muista kielistä.