Issue #7978 has been updated by alexeymuranov (Alexey Muranov).


I mean, my suggestion can cause problems if one uses `true`, `false`, `nil` for ternary logic, because `nil.to_i` and `false.to_i` would be both `0`.  According to Wikipedia, in ternary logic context, it is common to represent `false` by `-1`.
----------------------------------------
Feature #7978: boolean to_i
https://bugs.ruby-lang.org/issues/7978#change-37596

Author: alexeymuranov (Alexey Muranov)
Status: Rejected
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: next minor


=begin
The current behavior is the following:

  > nil.to_i
   => 0 
  > false.to_i
  NoMethodError: undefined method `to_i' for false:FalseClass

  > true.to_i
  NoMethodError: undefined method `to_i' for true:TrueClass

This does not look very consistent to me.  I think it could be useful to define (({false.to_i})) as 0 and (({true.to_i})) as 1.  I think those are fairly common numeric values for False and True.  These values as strings "0" and "1" are also commonly used in HTML forms to represent boolean values.
=end



-- 
http://bugs.ruby-lang.org/