批量序列化Ruby Hash

时间:2014-05-19 23:43:56

标签: ruby hash ruby-1.9.3

我需要将大型哈希序列化为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

应该有一种更简单的方法来获取哈希的块(或将哈希分成多个较小的哈希)并对它们进行操作。我错过了什么吗?

1 个答案:

答案 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