const = :FOO
FOO = :ok
defined? FOO => 'constant'
如何使用FOO
检查是否定义了const
?
defined? eval( const.to_s )
不起作用。
答案 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
的顺序错误。