Sagen wir, ich habe eine FunktionVerständnis Ruby-Enumerable # Karte (mit komplexeren Blöcke)
def odd_or_even n
if n%2 == 0
return :even
else
return :odd
end
end
Und ich hatte eine einfache enumerable Array
simple = [1,2,3,4,5]
Und ich lief es durch Karte, mit meinem Funktion, mit einem do-End-Block:
simple.map do
|n| odd_or_even(n)
end
# => [:odd,:even,:odd,:even,:odd]
Wie könnte ich dies tun, ohne, sagen wir, die Funktion in erster Linie zu definieren? Zum Beispiel
ist nicht gültig Ruby, und der Compiler wird wütend auf mich für sogar darüber nachzudenken. Aber wie würde ich eine gleichwertige Sache umsetzen, das funktioniert?
bearbeiten
In Wirklichkeit mir die Lösung für mein Problem zählt, viel weniger als die Motivation/Argumentation dahinter, mir zu helfen, zu verstehen, wie Rubin Blöcke arbeiten :)
Für das, was es wert ist, Sie Kann 1. sogar tun? oder 1.odd in ruby> = 1.8.7 – steenslag