Как получить хеш-ключ из хеша с вложенными массивами? - PullRequest
0 голосов
/ 20 октября 2018

В моем приложении Ruby on Rails есть хэш с вложенными массивами:

COLORS = {
  :red    => %w(draft open deactivated),
  :green  => %w(sent downloaded paid activated)
}

Есть ли способ передать значение массива, например draft, для получения соответствующего ключа хеша?

lookup_hash("draft") # => :red

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Другая мысль состоит в том, чтобы инвертировать хеш для более ясного кода:

STATUS_COLORS = {
  draft: :red,
  open: :red,
  deactivated: :red,
  sent: :green,
  downloaded: :green,
  paid: :green,
  activated: :green,
}

Тогда вы просто делаете STATUS_COLORS.fetch(status.to_sym).Это немного более многословно, но код, который обращается к нему, немного более читабелен.

0 голосов
/ 20 октября 2018

Что если данный элемент присутствует в нескольких массивах?Если это не проблема

def lookup_hash(item)
  COLORS.find { |k, v| v.include?(item) }&.first
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...