2011-11-25 174 views
4

我需要知道包含的ruby模塊是否可以訪問類變量。可以說:如何訪問包含的ruby模塊中的類變量?

require 'bar' 

class Foo 

@i_am_important 

    Bar.do_stuff 

end 

Module Bar 
    def Bar.do_stuff 
    @i_am_important.stuff... 
    end 
end 

有沒有辦法使上述工作?

編輯:改進的例子, EDIT2:解決問題

我只是改變了我的方法:酒吧成了它自己的階級,並得到「i_am_important」初始化時通過。可能不是最好的解決方案,但最後工作。感謝您的幫助。

+0

首先,如果你想包括模塊,您必須將所有可用於託管類的方法作爲實例方法 – WarHog

回答

0

可以包括模塊類中獲得像

module MyModule 
    @@my_val = 4 
    end 

    class MyClass 
    include MyModule 
    value = @@my_val 
    end 
+0

謝謝您的回答,但對於我的方案,我需要MyClass中的@my_val。誰可以通過MyModule訪問它? – SDD64

+0

@ SDD64:我讓模塊變量全局嘗試吧! –

+0

'@@ my_val'不是全局變量,它是一個類實例變量 – WarHog

0

訪問你爲什麼要跨類和模塊門使用變量?我認爲有這樣的方法:

module Bar 
    def do_stuff 
    puts im_am_important 
    end 
end 

class Foo 
    include Bar 

    def im_am_important 
    100 
    end 
end 

Foo.new.do_stuff # => 100 
0

如何:

#foo.rb 

@var 
module My_foo 
    var = @var 
    def My_foo.my_method(var) 
    puts(var) 
    end 
end 

#bar.rb 
require 'foo' 

class Bar 
    extend My_foo 
    @important_var = "bla" 
    My_foo.my_method(@important_var) 
end 

紅寶石bar.rb => BLA

+0

謝謝,但我忘了提及Foo已經擴展了另一個類。這就是我畢竟試圖使用模塊的原因。 – SDD64