在reduce块中用2个选项分隔逻辑的有效方法是什么?
我的意思是,如果选择等于1,产品如果选择等于2
这是我的代码,但如果选择等于2则不会查找。它仅适用于选择1和其他选项。
(1..10).reduce(choice == 1 ? :+ : :*)
如何在同一个减少块中处理选择1和选择2?
答案 0 :(得分:2)
几乎有效。你需要:
(1..10).reduce(choice == 1 ? :+ : :*)
更新:事实证明,真正的问题是需要一个不会简单地默认为标量产品的表达式模板。显然抛出异常(当选择超出范围时)要么是好的,要么至少是一个有用的模板占位符。然后想到几个表达:
(1..10).reduce({1 => :+, 2 => :*}[choice])
(1..10).reduce([nil, :+, :*][choice])