У меня есть модуль, подобный следующему
module MyModule
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def foo
@@var = 1
end
def bar
puts @@var
end
end
end
class A
include MyModule
foo
end
class B < A; end
, так что
B.bar outputs '1'.
Однако я хотел бы, чтобы .bar определялся только при вызове .foo.Я пытался
module MyModule
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def foo
@@var = 1
extend SingletonMethods
end
module SingletonMethods
def bar
puts @@var
end
end
end
Проблема в том, что
B.bar
возвращает ошибку "неинициализированная переменная класса @@ var в MyModule :: SingletonMethods".Как я могу сделать так, чтобы переменная, определенная в .foo, была доступна для .bar?