Ruby bietet standardmäßige Kontrollflussstrukturen (, , ), aber mit charakteristischen, ausdrucksstarken Merkmalen: (), , das mächtige und eine Vorliebe für gegenüber traditionellen Schleifen. Kontrollfluss in Ruby liest sich auf natürliche Weise.
Ruby bietet standardmäßige Kontrollflussstrukturen (, , ), aber mit charakteristischen, ausdrucksstarken Merkmalen: (), , das mächtige und eine Vorliebe für gegenüber traditionellen Schleifen. Kontrollfluss in Ruby liest sich auf natürliche Weise.
ifcasewhiledo_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) stellt die Bedingung ans Ende für prägnante, lesbare einzeilige Ausdrücke. unless (= „wenn nicht/falls nicht) liest sich natürlicher als Negation. Und if ist ein Ausdruck, der einen Wert zurückgibt.
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 ist mächtig — es gleicht Werte, Bereiche, Typen und (in Ruby 3) strukturelle Muster ab, indem es === unter der Haube nutzt. Weit flexibler als ein einfacher 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 hat while/until, aber idiomatisches Ruby bevorzugt Iteration mit Blöcken (each, times, map) gegenüber expliziten Schleifen — ausdrucksstarker und Ruby-artig.
Das Verständnis von Rubys Kontrollfluss ist fundamentales alltägliches Wissen, und mehrere charakteristische Merkmale spiegeln Rubys ausdrucksstarke, lesbare Philosophie wider.
Die Modifierform (do_x if condition) und unless (= „wenn nicht/falls nicht) ermöglichen es dir, prägnante, englischähnliche Bedingungen zu schreiben, die idiomatisches Ruby sind und ständig vorkommen.
Die Tatsache, dass if ein Ausdruck ist (einen Wert zurückgibt), ermöglicht elegante Zuweisungen.
Rubys case/when ist bemerkenswert mächtig — es gleicht Werte, Bereiche, Typen und (in Ruby 3) strukturelle Muster mittels === ab — was es weit flexibler als einen einfachen Switch macht und für saubere mehrseitige Verzweigungen nützlich ist.
Entscheidend ist, dass idiomatisches Ruby Iteration mit Blöcken (each, times, map, upto) gegenüber traditionellen for/while-Schleifen bevorzugt — dies ist ein definirender stilistischer Punkt: Ruby-Entwickler iterieren Kollektionen und Bereiche mit blockbasierten Methoden statt mit expliziten Schleifen, was ausdrucksstarker und Ruby-artig ist.
Das Verständnis dieser Konstrukte und Idiome — die Modifierform und unless für lesbare Bedingungen, das mächtige case/when und insbesondere die Vorliebe für blockbasierte Iteration gegenüber expliziten Schleifen — ist wichtig für das Schreiben und Lesen von idiomatischem Ruby.
Da Kontrollfluss in jedem Programm auftritt und da Rubys ausdrucksstarke Formen (Modifizierer, unless, mächtiger case, Block-Iteration) seine lesbarkeits-zentrierte Philosophie verkörpern, ist die Beherrschung dieser Strukturen essentiell, fundamentales Wissen für das Schreiben von natürlichem, idiomatischem Ruby anstatt schleifenlastiger Muster aus anderen Sprachen zu übersetzen.