Нет такого эквивалента, как вы хотите в stdlib. Большинство людей с такой потребностью просто используют цепной #[]
доступ.
Дано:
foo = {bar: {baz: {bang: 1}}}
Подстрочный:
foo[:bar][:baz][:bin]
, что приведет к NoMethodError
, если ключ отсутствует (так как # [] возвращает nil для отсутствующего ключа, который вы не можете в дальнейшем расшифровать).
Или, если вы хотите KeyError:
[:bar, :baz, :bin].reduce(foo, :fetch)
#dig
- это, прежде всего, уступка тому факту, что мы хотим иногда обходить глубоко вложенный хеш, в котором могут отсутствовать промежуточные ключи, без необходимости проверять каждый доступ на достоверность.