Ruby menawarkan kontrol-flow standar (if, , ) tetapi dengan fitur yang khas dan ekspresif: (), , yang powerful, dan preferensi untuk dibanding loop tradisional. Kontrol flow di Ruby terasa alami.
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
Bentuk modifier Ruby (puts "x" if condition) menempatkan kondisi di akhir untuk one-liner yang ringkas dan terbaca. unless (= "if not") terasa lebih alami daripada negasi. Dan if adalah sebuah expression yang mengembalikan nilai.
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 Ruby sangat powerful — mencocokkan nilai, range, tipe, dan (di Ruby 3) structural pattern, menggunakan === di balik layar. Jauh lebih fleksibel daripada switch dasar.
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 memiliki while/until, tetapi Ruby yang idiomatis lebih menyukai iterasi dengan block (each, times, map) daripada loop eksplisit — lebih ekspresif dan Ruby-like.
Memahami kontrol flow Ruby adalah pengetahuan fundamental yang digunakan setiap hari, dan beberapa fitur khas mencerminkan filosofi Ruby yang ekspresif dan terbaca.
Bentuk modifier (do_x if condition) dan unless (= "if not") memungkinkan Anda menulis kondisional yang ringkas dan berbahasa Inggris yang merupakan idiom Ruby dan muncul terus-menerus.
Fakta bahwa if adalah expression (mengembalikan nilai) memungkinkan assignment yang elegan.
case/when Ruby sangat powerful — mencocokkan nilai, range, tipe, dan (di Ruby 3) structural pattern via === — menjadikannya jauh lebih fleksibel daripada switch dasar dan berguna untuk branching multi-cara yang bersih.
Secara krusial, Ruby yang idiomatis lebih menyukai iterasi dengan block (each, times, map, upto) dibanding loop tradisional for/while — ini adalah poin stilistik yang menentukan: developer Ruby melakukan iterasi koleksi dan range dengan block-based method daripada loop eksplisit, yang lebih ekspresif dan Ruby-like.
Memahami konstruksi dan idiom ini — bentuk modifier dan unless untuk kondisional yang terbaca, case/when yang powerful, dan terutama preferensi untuk block-based iteration dibanding loop eksplisit — penting untuk menulis dan membaca Ruby yang idiomatis.
Karena kontrol flow muncul di setiap program, dan karena bentuk ekspresif Ruby (modifier, unless, case yang powerful, block iteration) mencerminkan filosofinya yang berfokus pada readability, menguasai mereka adalah pengetahuan foundational yang essential untuk menulis Ruby yang alami dan idiomatis daripada menerjemahkan pola loop-heavy dari bahasa lain.