Ruby! Bock auf Block?

Statt For-Schleifen verwendet man in Ruby gern Blöcke, also Codeabschnitte, die nach bestimmten Vorgaben, etwa für alle Elemente einer Datenstruktur, ausgeführt werden. Sie können unter anderem benutzt werden, um Strukturen auszuwerten oder zu manipulieren. Ausdrücke wie

array.each do |element|
...
end

bzw.
array.each { |element| ... }

auf Ruby (Programmiersprache) geht’s weiter mit

iterieren über array, wobei dem Block in jedem Iterationsschritt ein Visitor für das aktuelle Element mit der Bezeichnung element übergeben wird. Mit Blöcken werden elegante Konstruktionen wie 5.times{ … } oder array.sort_by{|element| element.size} möglich.

Iteratoren, also Methoden, die Blöcke aufrufen, können auch selbst definiert werden:

def mach_zweimal
yield
yield
end

mach_zweimal { puts „Block aufgerufen!“ }

Ausgabe:

Block aufgerufen!
Block aufgerufen!

So ähnlich steht es auch in den Ruby Einführungen, aber ich zitierte aus Wikipdedia, weil mir das „Duck Typing“-Beispiel dort so gut gefällt:

Eine graue Ente macht: Quak!
Eine dicke Kuh macht: Muuuh!

😉

Ich dachte schon das war’s, bis ich Block Closures in Ruby und # CLOSURES IN RUBY fand.

Wichtig ist jedenfalls und das gilt auch für Blöcke, dass alles ein Objekt ist in Ruby. Everything is an object in Ruby heißt es auch in „Ruby on Rails – Part 2: Just Enough Ruby“:
[youtube]https://www.youtube.com/watch?v=UCB57Npj9U0[/youtube]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert