我有这段代码:
prefix = "!"
admin_commands = {"hello" => ""}
if admin_commands.length > 0
admin_commands.map! { |command| prefix + command }
end
如何将"hello"
中的密钥admin_commands
更改为"!hello"
?
答案 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"=>""}