0
我试图访问模块的方法中的实例变量。访问模块实例变量
module Filter
def self.included(target)
puts "INCLUDED: #{@var}"
target.instance_variable_set(:@var, @var) # doesn't seem to work
end
def self.var=(var)
@var = var
end
def self.var
@var
end
def hello
@var
end
end
f = Filter
f.var = "hello"
puts "SET: #{f.var}"
class Main
include Filter
end
m = Main.new
puts "HELLO: #{m.hello}"
它产生这样的输出:
ruby test2.rb
SET: hello
INCLUDED: hello
HELLO:
最后一行 “HELLO:” 需要输出 “HELLO:您好”。我如何初始化@var实例变量来实现这一点?
谢谢,是的,这有点令人困惑。当我调用m.hello时,我只需要能够访问@var,这是从模块中包含的方法。有任何想法吗? – Vidar
@Vidar:这个选项 - 'def hello; self.class.instance_variable_get(:@ VAR);结束' –
和平与爱:)工作。谢谢!尽管如此,仍然有点困惑... – Vidar