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