布尔值的情况是否重要?

Hop*_*eam 3 ruby ruby-on-rails ruby-on-rails-3

rails textmate包的颜色代码为false,与FALSE不同

有区别吗?按照惯例或风格指南,全帽版本更好吗?

MBO*_*MBO 5

惯例是使用false,因为这是单个实例FalseClass.FALSE是常量,它保​​持false价值,但没有什么能阻止你(实际上只是警告)给它分配其他价值:

FALSE
=> false
FALSE.class
=> FalseClass
FALSE.object_id
=> 0
FALSE = 1
(irb):5: warning: already initialized constant FALSE
=> 1
FALSE
=> 1

false
=> false
false.class
=> FalseClass
false.object_id
=> 0
false = 1
SyntaxError: compile error
(irb):14: Can't assign to false
false = 1
       ^
Run Code Online (Sandbox Code Playgroud)

颜色的差异可能是因为FALSE它只是常量,并且突出显示为常量,而不是布尔值.

  • 换句话说:`false`是一个内置的*literal*,如`42`或''Hello'`,而`FALSE`只是一个常规的旧变量(或实际上是常量),如`FORTYTWO`或`HELLO`.因此,`false`具有精确定义的含义,该含义在Ruby语言规范中指定,而`FALSE`绝对没有任何意义. (2认同)