我需要验证一个常量是否已定义,以便进行条件判断。
我尝试过这个方法,但是这种语言中不存在“defined”方法:
if defined(constant)
value = :foo
else
value = :bar
end
我需要验证一个常量是否已定义,以便进行条件判断。
我尝试过这个方法,但是这种语言中不存在“defined”方法:
if defined(constant)
value = :foo
else
value = :bar
end
您可以使用宏和TypeNode#has_constant?:
FOO = 1
value = nil
{% if @type.has_constant? "FOO" %}
value = :foo
{% else %}
value = :bar
{% end %}
pp value #=> :foo
macro toplevel_constant_defined?(c)
{{ @type.has_constant? c }}
end
pp toplevel_constant_defined? "FOO" # => true
pp toplevel_constant_defined? "BAR" # => false
注意:正如Jonne Haß所提到的,你只需要在高级宏编程中使用此功能,在其他任何地方使用都会产生巨大的代码味道,无论使用哪种语言。