h = {
data: {
user: {
value: "John Doe"
}
}
}
Per assegnare valore alla hash nidificato, possiamo usaresicuro assegnare il valore di hash nidificato utilizzando Hash # dig o operatore solitario (e.)
h[:data][:user][:value] = "Bob"
Tuttavia, se una qualsiasi parte in mezzo manca , causerà un errore
Qualcosa di simile
h.dig(:data, :user, :value) = "Bob"
non funziona, dal momento che non c'è Hash#dig=
ancora disponibile.
Per assegnare in modo sicuro valore, che possiamo fare
h.dig(:data, :user)&.[]=(:value, "Bob") # or equivalently
h.dig(:data, :user)&.store(:value, "Bob")
ma c'è modo migliore per farlo?
Per quel che vale, questo è stato discusso qui (e rifiutato da Matz (per il momento): https://bugs.ruby-lang.org/issues/11747 –