替换哈希中的每个键

时间:2018-04-24 12:35:54

标签: ruby hash

我有这段代码:

prefix = "!"
admin_commands = {"hello" => ""}
if admin_commands.length > 0
  admin_commands.map! { |command| prefix + command }
end

如何将"hello"中的密钥admin_commands更改为"!hello"

3 个答案:

答案 0 :(得分:3)

admin_commands.transform_keys{|k| prefix + k}

答案 1 :(得分:3)

如果你正在使用ruby> = 2.5

admin_commands.transform_keys!{|k| prefix + k}

否则:

prefix = "!"
admin_commands = {"Hello" => ""}
admin_commands = admin_commands.map {|k, v| [prefix + k, v]}.to_h

此方法将散列的每个键/值对映射到一个数组,有效地返回一个pair数组,然后使用to_h

将其转换回哈希值

答案 2 :(得分:2)

出于好奇:

admin_commands.each_with_object({}) do |(k, v), hash|
  hash["#{prefix}#{k}"] = v
end
#⇒ {"!Hello"=>""}
admin_commands.
  keys.
  map(&prefix.method(:+)).
  zip(admin_commands.values).
  to_h
#⇒ {"!Hello"=>""}
相关问题