1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-02 22:58:01 +00:00
Files
til/ruby/reference-hash-key-with-safe-navigation.md

857 B

Reference Hash Key With Safe Navigation

Let's say we have a variable that we expect to be a hash, but could also be nil. We want to try to grab a value from that hash by referencing a specific key. Because it could be nil, we cannot simply do:

stuff[:key]

As that could result in NoMethodError: undefined method '[]' for nil (NoMethodError).

We should use the safe navigation operator (&) to avoid raising that error. However, we should pay attention to a necessary syntax shift from the short-hand [:key] to the long-hand [](:key).

stuff&.[](:key)

The meaning of this syntax is that we are calling the #[] method and we pass it a single argument :key wrapped in parentheses.

Another approach would be to use #dig which can feel more ergonomic than the above syntax switch.

stuff&.dig(:key)