我似乎不能轻易地检查一个对象是否是布尔值。在Ruby中有这样的东西吗?
true.is_a?(Boolean)
false.is_a?(Boolean)
现在我正在做这件事,我想把它缩短:
some_var = rand(1) == 1 ? true : false
(some_var.is_a?(TrueClass) || some_var.is_a?(FalseClass))
发布于 2010-06-14 03:42:55
我能想到的最简单的方法:
# checking whether foo is a boolean
!!foo == foo
发布于 2014-09-09 16:44:21
我发现这是简明扼要和自我记录的:
[true, false].include? foo
如果使用Rails或ActiveSupport,甚至可以使用in?
进行直接查询
foo.in? [true, false]
对于浮点数,我不建议检查所有可能的值,但当只有两个可能的值时,这是可行的!
发布于 2010-06-12 19:24:48
如上所述,除了TrueClass和FalseClass之外,没有布尔类,但是,您可以使用任何对象作为if/除非的主语,并且除了FalseClass和nil的实例之外,所有内容都为true
布尔测试返回FalseClass或TrueClass的实例
(1 > 0).class #TrueClass
下面的monkeypatch to Object将告诉你某事物是TrueClass还是FalseClass的实例
class Object
def boolean?
self.is_a?(TrueClass) || self.is_a?(FalseClass)
end
end
使用irb运行一些测试会得到以下结果
?> "String".boolean?
=> false
>> 1.boolean?
=> false
>> Time.now.boolean?
=> false
>> nil.boolean?
=> false
>> true.boolean?
=> true
>> false.boolean?
=> true
>> (1 ==1).boolean?
=> true
>> (1 ==2).boolean?
=> true
https://stackoverflow.com/questions/3028243
复制相似问题