ruby - 在循环内附加到 ruby​​ 数组时拒绝 nil 值

标签 ruby

我有一个循环,我在其中将循环的结果附加到一个数组中。代码是这样的

urls = []
series_id = [100,200,300,400]
series_id.each do |id|
  result_urls += iterate_id_and_get_urls(id)
end

def iterate_id_and_get_urls(id)
  #do something with id and maps it and returns its url which would result in an array
  #return that url array
end

但 iterate_id_and_get_urls(id) 有时也可以返回 nil,这将导致 nil 被附加到 result_urls 中。我怎样才能避免这种情况。我正在寻找类似下面的内容

result_urls += iterate_id_and_get_urls(id) unless nil?

最佳答案

如何使用 flat_map :

result_urls = series_id.flat_map { |id| iterate_id_and_get_urls(id) }.compact

甚至:

result_urls = series_id.flat_map { |id| iterate_id_and_get_urls(id) || [] }

关于ruby - 在循环内附加到 ruby​​ 数组时拒绝 nil 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27039948/

相关文章:

ruby try_convert 类方法不转换

ruby - Rails 控制台、RVM 和 readline 的问题

ruby-on-rails - 使 rails 中的数组仅显示数字

ruby-on-rails - Mongoid 和查询嵌入式位置?

使用 "do"时 Ruby block 的行为异常

ruby-on-rails - 如何在 resque rails 中连接单独的 redis 实例

ruby - Scheduler 插件每月在 Heroku 上占用多少小时?

ruby - 从文件读入数组并在 ruby​​ 中找到 ":"时停止

ruby-on-rails - Errno::ENOENT 没有这样的文件或目录 Rails 4

ruby - 在 Ruby 中将目录添加到加载路径的末尾?