J'ai le morceau de code suivant:Variable d'instance dans la classe singleton
class Fish
# @message = "I can swim"
class << self
@message = "I can jump!"
define_method(:action) { @message }
end
end
Fish.action => nil
Dès que je décommenter la variable @message
ci-dessus, Fish.action
rendements I can swim
. Pourquoi dans les deux cas, il ignore le message I can jump
. Pourquoi donc? Pourquoi la classe Fish est-elle liée au @message
défini au début mais pas à la classe singleton
?
Ceci est oh-so-près de [cette question] (http://stackoverflow.com/questions/40211113/how-to-use-hash-inside-instance-eval-ruby) vient de poser la question il y a quelques minutes. Si vous déplacez la définition de la méthode de classe 'action' en dehors de la classe singleton et la définissez (de manière équivalente)' def self.action; @message; fin », les réponses à la question précédente s'appliqueraient également à votre question. –