Ruby常量双管等于值还是定义的?常数



双管等于:

MY_CONST ||= 42

操作员定义?:

MY_CONST = 42 unless defined? MY_CONST

为什么第二种方式更加普遍?第一个有缺点吗?

在一般(常量和变量)情况下,如果MY_CONSTfalsenil,则它将被分配给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

最新更新