Menu
Coddy logo textTech

do..end vs. geschweifte Klammern

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

Ruby bietet Ihnen zwei Möglichkeiten, einen Block zu schreiben. Sie bedeuten dasselbe, aber jede hat einen bevorzugten Anwendungsfall.

do...end ist für mehrzeilige Blöcke:

[1, 2, 3].each do |n|
  doubled = n * 2
  puts "#{n} -> #{doubled}"
end

Geschweifte Klammern { ... } sind für einzeilige Blöcke gedacht, kurz und in Form eines Ausdrucks:

[1, 2, 3].each { |n| puts n * 2 }

Die beiden haben eine leicht unterschiedliche Rangfolge, aber die Regel, die Lernende benötigen, ist die Stilregel: geschweifte Klammern für Einzeiler, do...end für Mehrzeiler.

Beide Formen können einen Wert zurückgeben. Der letzte Ausdruck des Blocks ist das, was an Methoden wie map zurückgegeben wird:

[1, 2, 3].map { |n| n * 10 }    # [10, 20, 30]
[1, 2, 3].map do |n|
  n * 10
end                              # [10, 20, 30]
challenge icon

Aufgabe

Einfach

Lies eine durch Kommas getrennte Liste von Ganzzahlen aus der Eingabe. Gib zwei Zeilen aus:

  1. Jede Zahl verdoppelt, verbunden mit , . Verwende die Brace-Form von map.
  2. Den String "<n> squared is <n*n>" für jede Zahl, eine pro Zeile. Verwende die do...end-Form von each.

Für die Eingabe 1,2,3 lautet die Ausgabe:

2, 4, 6
1 squared is 1
2 squared is 4
3 squared is 9

Spickzettel

Ruby-Blocks haben zwei Syntax-Formen:

Geschweifte Klammern { ... } für einzeilige Blocks:

[1, 2, 3].map { |n| n * 2 }  # [2, 4, 6]

do...end für mehrzeilige Blocks:

[1, 2, 3].each do |n|
  doubled = n * 2
  puts "#{n} -> #{doubled}"
end

Beide Formen geben den letzten Ausdruck des Blocks zurück (verwendet von Methoden wie map).

Probier es selbst

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

# TODO: Zeile 1, verdoppelt, Klammer-Form von map, verbunden mit ", "
# TODO: Zeilen 2..n, Quadrate, do...end-Form von each
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