簡體   English   中英

如何在Ruby中合並來自API的哈希結果?

[英]How to merge hash results from an API in Ruby?

我正在從我們的電子郵件提供商的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! 而不是merge merge返回合並后的哈希值,但不更改其調用的哈希值。 merge! 返回合並的哈希值並將其調用的哈希值更新為該值。

比較每個文檔:

還要注意,這是在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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM