h = {
data: {
user: {
value: "John Doe"
}
}
}
Чтобы присвоить значение вложенному хешу, мы можем использовать
h[:data][:user][:value] = "Bob"
Однако, если какая-либо часть в середине отсутствует, это вызовет ошибку.
Что-то вроде
h.dig(:data, :user, :value) = "Bob"
не будет работать, поскольку пока нет Hash#dig=
.
Чтобы безопасно присвоить значение, мы можем сделать
h.dig(:data, :user)&.[]=(:value, "Bob") # or equivalently
h.dig(:data, :user)&.store(:value, "Bob")
Но есть ли лучший способ сделать это?