Mam następujący fragment kodu:instancji zmiennej wewnątrz singleton klasy
class Fish
# @message = "I can swim"
class << self
@message = "I can jump!"
define_method(:action) { @message }
end
end
Fish.action => nil
Jak tylko odkomentowaniu powyższy @message
zmienną Fish.action
powraca I can swim
. Dlaczego w obu przypadkach ignoruje komunikat I can jump
. Dlaczego? Dlaczego klasa Fish jest powiązana z @message
zdefiniowaną na początku, ale nie wewnątrz klasy singleton
?
To jakże blisko [to pytanie] (http://stackoverflow.com/questions/40211113/how-to-use-hash-inside-instance-eval-ruby) zapytał kilka minut temu. Jeśli przeniesiesz definicję metody klasy 'action' poza klasę singleton i zdefiniuj ją (równoważnie)' def self.action; @wiadomość; Koniec końców, odpowiedzi na wcześniejsze pytanie będą również dotyczyły Twojego pytania. –