syntax/safe_navigation_operators.rb
tests/_examples/syntax/safe_navigation_operators.rb in the metorex repository.
# `&.` reaches `[]`, `[]=` and `.()` written as method names, and answers
# nil without calling them when the receiver is nil.
prices = { tea: 3 }
p(prices&.[](:tea))
p(prices&.[]=(:coffee, 4))
p(prices)
double = ->(amount) { amount * 2 }
p(double&.(5))
missing = nil
p(missing&.[](:tea))
p(missing&.[]=(:tea, 1))
p(missing&.(5))
p(missing&.[](:tea) || :none)
Output:
3
4
{tea: 3, coffee: 4}
10
nil
nil
nil
:none