In Ruby gibt es zwei gängige Stile für die Auswahl im do end
Vergleich { }
zu Blöcken:
Der erste und sehr verbreitete Stil wurde von Ruby on Rails populär gemacht und basiert auf einer einfachen Regel von ein- oder mehrzeilig:
- Verwenden Sie geschweifte Klammern
{ }
für einzeilige Blöcke
- Verwendung
do end
für mehrzeilige Blöcke
Dies ist sinnvoll, da do / end in einem Einzeiler schlecht gelesen wird. Bei mehrzeiligen Blöcken ist es jedoch nicht konsistent, einen Abschluss }
in einer eigenen Zeile hängen zu lassen, was end
in Ruby verwendet wird, z. B. Modul-, Klassen- und Methodendefinitionen ( def
usw.) .) und Kontrollstrukturen ( if
, while
, case
, etc.)
Der zweite, weniger häufig gesehene Stil ist als semantische oder " Weirich Braces " bekannt, die vom verstorbenen, großen Rubinisten Jim Weirich vorgeschlagen wurde:
- Verwendung
do end
für Verfahrensblöcke
- Verwenden Sie Klammern
{ }
für Funktionsblöcke
Dies bedeutet, dass der Block, wenn er auf seinen Rückgabewert bewertet wird , verkettbar sein sollte und die {}
geschweiften Klammern für die Methodenverkettung sinnvoller sind.
Auf der anderen Seite, wenn der Block für seine ausgewertet wird Nebenwirkungen untersucht wird , hat der Rückgabewert keine Konsequenz, und der Block "tut" nur etwas, so dass es keinen Sinn macht, verkettet zu werden.
Diese Unterscheidung in der Syntax vermittelt eine visuelle Bedeutung für die Auswertung des Blocks und ob Sie sich um seinen Rückgabewert kümmern sollten oder nicht.
Hier wird beispielsweise der Rückgabewert des Blocks auf jedes Element angewendet:
items.map { |i| i.upcase }
Hier wird jedoch nicht der Rückgabewert des Blocks verwendet. Es arbeitet prozedural und dabei einen Nebeneffekt mit sich:
items.each do |item|
puts item
end
Ein weiterer Vorteil des semantischen Stils besteht darin, dass Sie keine geschweiften Klammern für do / end ändern müssen, nur weil dem Block eine Zeile hinzugefügt wurde.
Als Beobachtung sind zufällig funktionale Blöcke häufig einzeilig , und prozedurale Blöcke (z. B. config) sind mehrzeilig. Wenn Sie also dem Weirich-Stil folgen, sehen Sie fast genauso aus wie dem Rails-Stil.