如何在 Ruby 中合并来自 API 的哈希结果



我正在从我们电子邮件提供商的API中检索订阅者信息。它们返回每页 25 个订阅者的哈希值。我想将每个页面的结果合并到一个哈希 (@members_subs_all)。但是,虽然我的方法正确返回@members_subs@members_subs_all但不包含任何数据。

合并是正确的方法吗?如果是这样,我缺少什么才能使其正常工作?如果没有,我应该怎么做?

def retrieve_members_info
  @members_subs_all = {}
  pages =* (0..1000)
  pages.each do |i|
    @members_subs = # API returns hash of 25 subscribers per page 
      @members_subs_all.merge(@members_subs)
      break if @members_subs["data"].empty?
  end
  puts "members_subs_all #{@members_subs_all["data"]}"
end

你想要merge!而不是mergemerge 返回合并哈希的值,但不更改调用它的哈希。 merge! 返回合并哈希的值,并将调用它的哈希更新为该值。

比较每个文档:

  • http://www.ruby-doc.org/core-2.0.0/Hash.html#method-i-merge
  • http://www.ruby-doc.org/core-2.0.0/Hash.html#method-i-merge-21

另请注意,这是 Ruby 和 Ruby 库中的命名模式:

  • method 将某些更改的值返回给调用方,但不会永久更改调用方的值。
  • method!返回更改的值,并使用该值更新调用方。

(另请参阅method?这些谓词基于调用方是否为真method

返回真值。
def merge_hashs(a,b)
  a.merge(b) {|key, a_v, b_v| merge_hashs(a_v, b_v) }
end

最新更新