ruby - 在reduce block 中使用选择

标签 ruby reduce

在reduce block 中通过2个选择来分离逻辑的有效方法是什么?

我的意思是,如果选择等于 1,则求和;如果选择等于 2,则求积

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

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

我如何在同一个reduce block 中处理选择1和选择2?

最佳答案

几乎奏效了。您需要:

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

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

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

关于ruby - 在reduce block 中使用选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600305/

相关文章:

javascript - 如何在 Rails 中使用 gmaps

ruby - 你如何访问 Ruby 中的符号表?

algorithm - 使用 Map/Reduce 算法对单词进行计数

javascript - 找到三个顶级标签

arrays - 为什么我不能调用reduce(到:) on an array literal in Xcode 9. 2?

hadoop - 如何将数据附加到存储在HDFS中的文件

ruby-on-rails - rails 4 - 遍历查询结果

ruby-on-rails - 如何只显示独特的主题?

ruby - 尝试在 ruby​​ 中搜索字符串以获取输入

javascript - 将对象内的相同 id 连接到一个对象数组