Vous pouvez utiliser macro et TypeNode#has_constant?:
FOO = 1
value = nil
{% if @type.has_constant? "FOO" %}
value = :foo
{% else %}
value = :bar
{% end %}
pp value #=> :foo
Ou mieux encore, vous pouvez écrire une courte personnalisée macro pour cela:
macro toplevel_constant_defined?(c)
{{ @type.has_constant? c }}
end
pp toplevel_constant_defined? "FOO" # => true
pp toplevel_constant_defined? "BAR" # => false
Remarque : comme mentionné par Jonne Haß, vous seulement besoin de cela dans la programmation avancée de macro, partout ailleurs c'est une énorme odeur de code, quelle que soit la langue utilisée.
Bien qu'il soit à noter que vous ne devriez jamais avoir besoin de cela dans la programmation avancée de macro, partout ailleurs c'est une énorme odeur de code, indépendamment de la langue utilisée. –
@ JonneHaß merci. J'ai ajouté une note pour ça –