Converting values to an Integer, Float or BigDecimal (or even Rational) in Ruby sometimes comes with an unwelcome side effect: that nil responds to #to_i, #to_f, #to_d, or #to_r by returning a class-appropriate zero value.
Sometimes this is fine.
When it isn't, here is a quick tip for avoiding it - use the safe navigation operator, which does not send the method that follows it to nil.
irb(main):001:0> nil.to_i
=> 0
irb(main):002:0> nil&.to_i
=> nil
irb(main):003:0> nil.to_f
=> 0.0
irb(main):004:0> nil&.to_f
=> nil
That's it. Happy navigating!
Top comments (0)