我需要将大型哈希序列化为key1=value1, key2=value2, key3=value3...
形式。我需要为每100个密钥执行此操作,并将字符串发送到远程服务器。
def batch_serialize(h, size)
h_as_a = h.to_a
while h_as_a.length > 0 do
batch = Hash[h_as_a.slice!(0,size)]
serialized = []
batch.each_pair { |k,v| serialized += "#{k}=#{v}" }
transmit(serialized.join(', '))
end
end
应该有一种更简单的方法来获取哈希的块(或将哈希分成多个较小的哈希)并对它们进行操作。我错过了什么吗?
答案 0 :(得分:1)
我会使用Enumerable#each_slice
,如下所示
def batch_serialize(h, size)
h.each_slice(size) do |rows|
serialized = rows.map { |k,v| "#{k}=#{v}" }
transmit(serialized.join(', '))
end
end