Заменить каждый ключ в хэше - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть этот код:

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

Как мне изменить ключ "hello" в admin_commands на "!hello"?

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Если вы используете 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

Этот метод отображает каждую пару ключ / значение хэша в массив, эффективно возвращаямассив пар, который затем преобразуется обратно в хеш, используя to_h

0 голосов
/ 24 апреля 2018

Просто из любопытства:

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"=>""}
0 голосов
/ 24 апреля 2018
admin_commands.transform_keys{|k| prefix + k}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...