检查是否已定义常量

pet*_*ter 78 ruby constants

我希望这是一个简单的问题.在下面的示例中,如何检查是否已定义常量?

#this works
var = var||1
puts var
var = var||2
puts var

#this doesn't
CONST = CONST||1
puts CONST
CONST = CONST||2
puts CONST

=> 1
   1
   uninitialized constant CONST (NameError)
Run Code Online (Sandbox Code Playgroud)

jib*_*iel 124

CONST = 2 unless defined? CONST
Run Code Online (Sandbox Code Playgroud)

有关优秀操作员的更多信息,请参见此处defined?.

PS并且在未来我想你会想要var ||= 1而不是var = var||1.

  • `const_defined?`是`Module`类的一个方法,它会告诉你是否在该模块及其祖先(可选)中定义了常量.查看文档以获取一些示例 - http://www.ruby-doc.org/core-1.9.3/Module.html#method-i-const_defined-3F (7认同)
  • 还有`const_defined?`但它对我不起作用; 不知道为什么. (6认同)