Menu
CoddyTech

do..end vs. geschweifte Klammern

Teil des Abschnitts Logik und Ablauf 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, mit , verbunden. Verwende die geschweifte Form von map.
  2. Die Zeichenkette "<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

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 und Ablauf

Übe selbstständig: Online-Ruby-Compiler