Ruby哈希中的增量

use*_*165 3 ruby hashmap

我正在尝试在哈希中递增密钥.例如.我想要得到这个

{:b => "crayons", :c => "colors", :d => "apples"} 
Run Code Online (Sandbox Code Playgroud)

变成这个

{:c => "crayons", :d => "colors", :e => "apples"} 
Run Code Online (Sandbox Code Playgroud)

我认为这段代码可以解决问题,但事实并非如此.我需要改变什么?

def hash(correct)
  mapping = correct.each{|key, element| key.next}
  Hash[correct.map {|key, element| [mapping[key], element]}]
end
Run Code Online (Sandbox Code Playgroud)

bjh*_*aid 5

运用 Enumerable#each_with_object

def hash_correct(hsh)
  hsh.each_with_object({}) { |(k,v), hsh| hsh[k.succ] = v }
end

hash_correct({:b => "crayons", :c => "colors", :d => "apples"})
# => {:c=>"crayons", :d=>"colors", :e=>"apples"}
Run Code Online (Sandbox Code Playgroud)