Digamos que tengo una funciónentendimiento Rubí Enumerable # mapa (con bloques más complejos)
def odd_or_even n
if n%2 == 0
return :even
else
return :odd
end
end
Y tuve un simple conjunto numerable
simple = [1,2,3,4,5]
Y yo se lo pasó por mapa, con mi función, usando un bloque do-end:
simple.map do
|n| odd_or_even(n)
end
# => [:odd,:even,:odd,:even,:odd]
¿Cómo podría hacer esto sin, digamos, definir la función en primer lugar? Por ejemplo,
# does not work
simple.map do |n|
if n%2 == 0
return :even
else
return :odd
end
end
# Desired result:
# => [:odd,:even,:odd,:even,:odd]
no es ruby válido, y el compilador se enoja conmigo por siquiera pensarlo. ¿Pero cómo implementaría un tipo equivalente de cosas, eso funciona?
edición
En realidad, la solución a mi problema me importa mucho menos que la motivación/razonamiento detrás de él, para ayudar a entender más cómo funciona :) bloques rubí
Por lo que vale la pena, se puede hacer 1.even? o 1.odd? en ruby> = 1.8.7 – steenslag