Home > Software design >  What does this line of ruby do?
What does this line of ruby do?

Time:03-01

I stumbled upon this line of Ruby in our codebase:

value = value.to_i if value == value.to_i

and I can't understand what it is supposed to do.

If the guard condition is false, it does nothing. If it is true, it's a noop.

What gives?

CodePudding user response:

This line of code will cast any integer number to the Integer class, so it will replace 2.0 or BigDecimal(2) with 2. This might be useful if you have code later on which cares about the class of value.

CodePudding user response:

It is a noop in most cases. However, in cases where value doesn't respond to to_i, a NoMethodError will be thrown - I very much doubt that this is intentional, but without more context it's difficult to be more precise.

CodePudding user response:

I can see some use if value is a float. After this line value will be either a an Integer (if value was 4.0) or nil (if value was 4.5 or so).

  •  Tags:  
  • ruby
  • Related