比方说,我有一个函数了解Ruby的可枚举#地图(更复杂的块)
def odd_or_even n
if n%2 == 0
return :even
else
return :odd
end
end
而且我有一个简单枚举阵列
simple = [1,2,3,4,5]
,我跑它通过地图,与我功能,使用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]
是无效的红宝石,并且编译器因为想到它而生气。但是,我将如何实现一个等效的东西,这是有效的?
编辑
在现实中,解决我的问题关系到我比它背后的动机/推理少了很多,帮助我了解更多块红宝石是如何工作的:)
对于它的价值,你可以做甚么?或1.odd?在红宝石> = 1.8.7 – steenslag 2010-06-15 06:57:10