怎么检查Ruby对象是否为布尔值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (29)

似乎找不到一个好的轻松地检查对象是否是布尔值。在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))
提问于
用户回答回答于

我能想到的最简单的方法:

# checking whether foo is a boolean
!!foo == foo
用户回答回答于

ruby没有Boolean类,检查的唯一方法是执行所做的操作(将对象与truefalse对象的类TrueClassFalseClass)。想不出你为什么需要这个功能,你能解释一下吗?

如果需要此功能,试试这个:

module Boolean; end
class TrueClass; include Boolean; end
class FalseClass; include Boolean; end

true.is_a?(Boolean) #=> true
false.is_a?(Boolean) #=> true

扫码关注云+社区