У меня есть следующий фрагмент кода:переменная экземпляра внутри класса одноплодной
class Fish
# @message = "I can swim"
class << self
@message = "I can jump!"
define_method(:action) { @message }
end
end
Fish.action => nil
Как только я раскомментируйте выше @message
переменной, Fish.action
возвращает I can swim
. Почему в обоих случаях он игнорирует сообщение I can jump
. Почему это? Почему класс Fish привязан к @message
, определенному в начале, но не внутри класса singleton
?
Это о так близко к [этот вопрос] (HTTP://stackoverflow.com/questions/40211113/how-to-use-hash-inside-instance-eval-ruby) попросил несколько минут назад. Если вы переместите определение метода класса 'action' вне класса singleton и определите его (эквивалентно)' def self.action; @сообщение; end', ответы на более ранний вопрос будут применены и к вашему вопросу. –