在减少块中使用选择

时间:2013-12-15 21:55:37

标签: ruby reduce

在reduce块中用2个选项分隔逻辑的有效方法是什么?

我的意思是,如果选择等于1,产品如果选择等于2

这是我的代码,但如果选择等于2则不会查找。它仅适用于选择1和其他选项。

(1..10).reduce(choice == 1 ? :+ : :*)

如何在同一个减少块中处理选择1和选择2?

1 个答案:

答案 0 :(得分:2)

几乎有效。你需要:

(1..10).reduce(choice == 1 ? :+ : :*)

更新:事实证明,真正的问题是需要一个不会简单地默认为标量产品的表达式模板。显然抛出异常(当选择超出范围时)要么是好的,要么至少是一个有用的模板占位符。然后想到几个表达:

(1..10).reduce({1 => :+, 2 => :*}[choice])
(1..10).reduce([nil, :+, :*][choice])