比方說,我有一個函數瞭解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