如何检查常量是否由Ruby中的符号定义?

时间:2015-07-07 01:03:45

标签: ruby

const = :FOO
FOO = :ok
defined? FOO => 'constant'

如何使用FOO检查是否定义了const

defined? eval( const.to_s )

不起作用。

2 个答案:

答案 0 :(得分:7)

改为使用const_defined?http://ruby-doc.org/core/classes/Module.html#M000487

Object.const_defined?(const.to_s)

答案 1 :(得分:1)

const = :FOO
FOO = :OK

defined?(FOO) # => "constant"

instance_eval("defined?(#{const})") # => "constant"

这将评估语句,并绕过如何定义的限制?因为它没有评估任何东西,所以我们必须在它获得调用defined?的指令之前对其进行评估。

您的eval的顺序错误。