Disons que j'ai une fonctionComprendre Ruby Enumerable carte # (avec des blocs plus complexes)
def odd_or_even n
if n%2 == 0
return :even
else
return :odd
end
end
et moi avions simple tableau dénombrable
simple = [1,2,3,4,5]
Et je l'ai couru à travers la carte, avec mon fonction, en utilisant un bloc do-end:
simple.map do
|n| odd_or_even(n)
end
# => [:odd,:even,:odd,:even,:odd]
Comment pourrais-je faire sans, par exemple, la définition de la fonction en premier lieu? Par exemple,
# 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]
n'est pas ruby valide, et le compilateur se fâche contre moi même y penser. Mais comment pourrais-je mettre en place une sorte de chose équivalente, ça marche?
modifier
En réalité, la solution à mon problème important pour moi beaucoup moins que la motivation/raisonnement derrière elle, pour me aider à mieux comprendre comment les blocs ruby travail :)
Pour ce que ça vaut, vous peut faire 1.even? ou 1.odd? in ruby> = 1.8.7 – steenslag