我希望这是一个简单的方法。在下面的示例中,如何检查常量是否已定义?
#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)
Answers:
const_defined?
是Module
类的方法,它将告诉您是否在该模块及其祖先中定义了常量(可选)。检查文档中的一些示例-ruby-doc.org/core-1.9.3/Module.html#method-i-const_defined-3F
pry> User.const_defined?("PER_PAGE")
=> true
pry> User.const_defined?("PER_PAGE123")
=> false
CONST ||= :default_value
上面的代码对我适用于ruby 1.9.3,但对1.8不适用... 1.8现在已经很古老了。
const_defined?
但对我不起作用;不知道为什么。