Как сохранить значения в раскопанных ключах хеша

У меня есть хеш:

a = {b: {c: {d: e}}}

Как сохранить d из a? Должен ли я написать так:

x = [:b][:c]
a(x) = "foo"

a выход {b:{c:"foo"}}

вы хотите получить ключи от любого хэша, если да, то вы можете просто сделать keys = a[:b][:c].keys, если нет, вам нужно более четко сформулировать свой вопрос о том, что именно вы ищете

Subash 18.03.2018 23:45

Вы ищете Hash#dig и a.dig(:b, :c) или a.dig(*[:b, :c])?

mu is too short 18.03.2018 23:53

Замечу, что dig от Ruby 2.3. Так что, если вы используете любую версию ниже 2.3, это не сработает.

Surya 19.03.2018 13:53
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
3
3
55
3

Ответы 3

Как отмечает mu в комментариях, вы, вероятно, захотите использовать dig:

a = {b: {c: {d: :e}}}
keys = [:b, :c] 
d_and_e = a.dig(*keys)

Это вернет {d: :e}.

a[:b][:c].keys.first # => :d
a[:b][:c].keys.first.to_s # => "d"

hash.keys.join или hash.keys (если ключ только один)

Я понятия не имею, что это пытается сказать

engineersmnky 19.03.2018 14:15

Другие вопросы по теме