【发布时间】:2011-03-03 18:57:44
【问题描述】:
假设我有一个函数
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 块的工作原理:)
【问题讨论】:
-
为了它的价值,你可以做 1.even?还是 1.odd?在红宝石中 >= 1.8.7
标签: ruby language-features enumerable