Ruby: как я могу получить значение в га sh, зная его (массив) путь? - PullRequest
3 голосов
/ 13 февраля 2020

У меня есть это га sh

parentNode = {
  "titles" => { 
    "primary" => "On Days Like These",
    "secondary" => "Matt Monro",
    "tertiary" => nil
  },
  "synopses" => nil,
  "image_url" => "https://ichef.bbci.co.uk/images/ic/{recipe}/p01bqrb8.jpg",
  "duration" => nil
}

, и я знаю «путь» к значению, которое я хочу:

path = ['titles','secondary']

Как я могу получить соответствующее значение Matt Monro ?

Это работает

puts parentNode['titles']['secondary']

, но я хочу получить те же данные, используя определенную переменную path над. Но

  puts parentNode[path]
  puts parentNode.dig(path)

ничего не показывает.

Я новичок в ruby, почему это не работает?

Спасибо

1 Ответ

4 голосов
/ 13 февраля 2020

Hash.dig принимает переменное количество аргументов, для преобразования массива в «переменные аргументы» необходимо использовать * ( оператор сплата )

parentNode.dig(*path)
...