返回真值。
我正在从我们电子邮件提供商的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!
返回合并哈希的值,并将调用它的哈希更新为该值。
比较每个文档:
- 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