Actions
Feature #20756
closedIntroduce Boolean class
Status:
Rejected
Assignee:
-
Target version:
-
Description
Hello All,
Is is possible to add a parent class for TrueClass
and FalseClass
?
I always found it strange that there was not a concept to group true
and false
together.
e.g.:
class TrueClass < Boolean ; end
class FalseClass < Boolean ; end
# replaces the hack:
module Boolean ; end
TrueClass.include(Boolean);
FalseClass.include(Boolean);
In our code, we often want to validate that a value is of a certain type.
case(value)
when String ...
when Integer ...
when true, false ... # Boolean
# alt: when TrueClass, FalseClass
end
# or
def valid_args?
value.kind_of?(String)
end
def valid_args?
value.kind_of?(Integer)
end
def valid_args?
[true, false].include?(value)
[TrueClass, FalseClass].detect { |klass| value.kind_of?(klass) }
end
Does it make sense to others to have a way to group true
and false
together?
Thank you for your thoughts,
Keenan
Updated by byroot (Jean Boussier) 2 months ago
- Related to Feature #14224: Boolean class added
Updated by byroot (Jean Boussier) 2 months ago
- Related to Bug #12827: Add Boolean data type. added
Updated by byroot (Jean Boussier) 2 months ago
- Related to Feature #12515: Create "Boolean" superclass of TrueClass / FalseClass added
Updated by matz (Yukihiro Matsumoto) 2 months ago
- Status changed from Open to Rejected
#12515 is an enough reason to reject this idea.
Rejected for several reasons:
- many gems and libraries had already introduced Boolean class. I don't want to break them.
- true and false are the only representative of true-false values. In Ruby. nil and false are falsy values, and everything else is a true value. There's no meaning for having a superclass of TrueClass and FalseClass as Boolean.
Even if we introduced Boolean
class, it'd only used to check type/class using kind_of?
(which is against duck-typing principle). Since we have no common behavior/implementation of boolean objects.
Matz.
Updated by hsbt (Hiroshi SHIBATA) 7 days ago
- Related to Feature #20882: Provide Boolean(...) added
Actions
Like0
Like0Like0Like0Like0Like0