J'ai une classe avec une constante définie pour cela. J'ai ensuite une méthode de classe définie qui accède à cette classe constante. Cela fonctionne bien. Un exemple: Mon problème se pose en essayant de déplacer cette méthode de classe sur un module externe, comme: p> rubis interprète La méthode qui demande une constante du module, plutôt que la classe: p> Ainsi, quelles astuces magiques avez-vous des bourses de magie à laisser la méthode accéder à la classe constante? Merci beaucoup. P> p>
3 Réponses :
Cela semble fonctionner:
#! /usr/bin/env ruby module CommonMethods def shout_my_constant puts self::Const.upcase end end class NonInstantiableClass Const = "hello, world!" class << self include CommonMethods end end NonInstantiableClass.shout_my_constant
Eh bien, cela efface les choses. Je n'avais pas encore expérimenter la syntaxe :: Syntaxe :).
Le problème est que si vous écrivez simplement const code> il est évalué sur le temps de création du module. Vous devez utiliser
module # const_get code> comme ceci:
const_get (: const) code>. Ceci est évalué au moment de l'exécution lorsque la méthode est exécutée. Donc, cela se produit dans votre classe et non dans votre module. P>
Merci! C'était le genre de méthode que je cherchais, sans succès.
Il convient probablement de noter que vous n'avez pas besoin d'inclure des modules dans une métaclasse.
class NonInstantiableClass Const = "hello, world!" extend CommonMethods end
Encore un autre commentaire utile. J'ai appris trois choses à poser une question.