双管等于:
MY_CONST ||= 42
操作员定义?:
MY_CONST = 42 unless defined? MY_CONST
为什么第二种方式更加普遍?第一个有缺点吗?
在一般(常量和变量)情况下,如果MY_CONST
是false
或nil
,则它将被分配给42。
具体到常量的情况,您不应该重新分配常量(尽管Ruby允许您这样做);CCD_ 4检查是否已经声明了该常数。
为了证明这两个问题:
2.0.0-p353 :001 > MY_CONST = false
=> false
2.0.0-p353 :002 > MY_CONST ||= 42
(irb):2: warning: already initialized constant MY_CONST
(irb):1: warning: previous definition of MY_CONST was here
=> 42
2.0.0-p353 :003 > MY_CONST
=> 42