h = {
data: {
user: {
value: "John Doe"
}
}
}
Um Wert zu dem verschachtelten Hash zuweisen, wirsicher Wert verschachtelte Hash zuweisen Hash # dig oder Einsamen Operator (&).
h[:data][:user][:value] = "Bob"
jedoch, wenn ein Teil in der Mitte fehlt verwenden können , es wird einen Fehler verursachen.
So etwas wie
h.dig(:data, :user, :value) = "Bob"
wird nicht funktionieren, da es keine Hash#dig=
vorhanden ist.
Um sicher Wert zuweisen, wir
h.dig(:data, :user)&.[]=(:value, "Bob") # or equivalently
h.dig(:data, :user)&.store(:value, "Bob")
tun können, aber es gibt bessere Möglichkeit, das zu tun?
Für das, was es wert ist, hat dies hier diskutiert worden (und von Matz (vorerst) abgelehnt: https://bugs.ruby-lang.org/issues/11747 –