假设我有一个功能
def odd_or_even n
if n%2 == 0
return :even
else
return :odd
end
end
我有一个简单的可枚举数组
simple = [1,2,3,4,5]
我通过 map 运行它,使用我的函数,使用 do-end 块:
simple.map do
|n| odd_or_even(n)
end
# => [:odd,:even,:odd,:even,:odd]
如果不首先定义函数,我怎么能做到这一点?例如,
# 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]
不是有效的 ruby,编译器会因为我考虑它而生我的气。但是我将如何实现一种等效的东西,这行得通?
编辑
实际上,我的问题的解决方案对我来说比它背后的动机/推理要重要得多,以帮助我更多地了解 ruby 块是如何工作的 :)