Menu
Coddy logo textTech

Inline if / unless

Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy — Lektion 41 von 56.

Ruby ermöglicht es Ihnen, if und unless an das Ende einer einzelnen Anweisung zu setzen, als einzeiligen Modifikator. Es liest sich fast wie Englisch.

puts "Adult" if age >= 18
puts "Save your work" unless saved

Dies ist dasselbe wie:

if age >= 18
  puts "Adult"
end

unless saved
  puts "Save your work"
end

Die Inline-Form eignet sich hervorragend für Guard-Style-Prüfungen am Anfang einer Methode oder für einmalige bedingte Aktualisierungen innerhalb einer Schleife:

return if name.nil? || name.empty?

counts = Hash.new(0)
words.each do |w|
  counts[w] += 1 unless w.start_with?("#")
end

Verwenden Sie, wie beim Ternär-Operator, Inline-Modifier für kurze Anweisungen. Wenn der Rumpf mehr als eine einzelne Zeile umfassen würde, schreiben Sie stattdessen einen echten if-Block.

challenge icon

Aufgabe

Einfach

Lies eine durch Kommas getrennte Liste von Ganzzahlen ein. Gib für jede Zahl eine Zeile aus, aber nur, wenn die Zahl ungleich Null ist:

  • Gib positive: <n> aus, wenn n > 0
  • Gib negative: <n> aus, außer wenn n >= 0

Beide Zeilen müssen die Inline-Modifier-Form verwenden (kein if-Block, kein else). Gib nach der Schleife Skipped zeros: <count> aus, wobei der Zähler die Anzahl der Nullen ist, ebenfalls ohne einen if-Block berechnet (verwende count).

Für die Eingabe 3,-2,0,5,0 ist die Ausgabe:

positive: 3
negative: -2
positive: 5
Skipped zeros: 2

Spickzettel

Ruby erlaubt if und unless als Inline-Modifikatoren am Ende einer einzelnen Anweisung:

puts "Adult" if age >= 18
puts "Save your work" unless saved

Nützlich für Guard-Clauses oder einfache bedingte Aktualisierungen:

return if name.nil? || name.empty?

counts[w] += 1 unless w.start_with?("#")

Verwenden Sie Inline-Modifikatoren nur für einzeilige Anweisungskörper; verwenden Sie einen vollständigen if-Block für alles, was länger ist.

Probier es selbst

numbers = gets.chomp.split(",").map(&:to_i)

# TODO: Ausgabe mit Inline-if / unless für jede Zahl
# TODO: Übersprungene Nullen ausgeben: <n> mit count
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmfluss