Vérifier si une constante est déjà défini
C'est simple, je l'espère.
Comment puis-je vérifier, dans l'exemple suivant, si une constante est déjà défini?
#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)
Vous devez vous connecter pour publier un commentaire.
Voir ici pour en savoir plus sur awesome
defined?
opérateur.P. S. Et dans le futur, j'imagine que vous aurez envie
var ||= 1
au lieu devar = var||1
.const_defined?
mais il ne fonctionne pas pour moi; je ne sais pas pourquoi.const_defined?
est une méthode deModule
classe et il vous dira si la constante est définie dans le module et de ses ancêtres (en option). Vérifiez la documentation pour quelques exemples — ruby-doc.org/core-1.9.3/Module.html#method-i-const_defined-3Fconst_defined? API
pry> User.const_defined?("PER_PAGE")
=> true
pry> User.const_defined?("PER_PAGE123")
=> false
ci-dessus fonctionne pour moi sur ruby 1.9.3 mais échoue sur 1.8... et bien la 1.8 est ancien maintenant.