Ruby - 根据某些条件从数组中选择修改后的值

标签 ruby ruby-1.8.7

我知道 Ruby 中的选择、收集和映射是如何工作的。我只是想知道是否有一个类似的 native Ruby 方法可以将它们组合起来并在一次迭代中给出结果,而无需从数组中删除 nil ?

例如。

(1..10).map { |x| x*3 if x.even? }.compact
(1..10).select { |x| x.even? }.map{ |x| x*3 }
(1..10).select { |x| x.even? }.collect{ |x| x*3 }

都给出相同的结果,即 [6, 12, 18, 24, 30]。但是“some_method”是否会给出相同的结果?

(1..10).some_method { |x| x*3 if x.even? }  ## evaluates to [6, 12, 18, 24, 30]

最佳答案

Enumerable#each_with_object

(1..10).each_with_object([]) { |x,arr| arr.push(x*3) if x.even? }  ## evaluates to [6, 12, 18, 24, 30]

关于Ruby - 根据某些条件从数组中选择修改后的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21340439/

相关文章:

ruby - Rails 3 + Devise + Rspec - Controller 测试中的未定义方法错误

java - 在java中转换ruby unpack等效项

ruby - ruby 中的 400 个错误请求但不是 curl

ruby - 如何禁用ruby UDPSocket解析recvfrom上的IP地址?

ruby - Ruby 1.8.7 中的 flat_map

ruby - 在 Monterey 12.0.1 上安装 RVM 1.8.7 失败

ruby - 另一种方法而不是转义正则表达式模式?

ruby:使用 block 作为普通(内联)表达式?

ruby - 为什么我的 JSON 提要中的这个 Unicode/UTF-8 "En Dash"字符在我下载时会被损坏?

ruby - 为什么空 ERB 文件会在 Ruby 1.8.7 中引起警告?