2014-04-01 113 views
0

如果我有一個名爲「Mod1」的模塊並且它有一個計算出的變量。現在,如果我有一個調用此模塊的腳本文件,我該如何將該變量的值放入模塊中?或者更好的是,如果變量是一個數組,我該如何遍歷該變量?獲取模塊ruby中變量的值

謝謝!

這裏是我的主要腳本中的代碼在那裏我建立模塊:

require_relative 'modules/Mod1' 

這裏是我的模塊:

module Mod1 
    @passes = [] 
    def self.passes(file) 
    @passes.push(file) 
    end 
end 

所以從我的主腳本我能夠運行MOD1。通過(「name1」)和Mod1.passes(「name2」),然後我希望能夠遍歷通過的值,如:

Mod1.passes.each do |pass| 
    puts pass 
end 
+1

你能告訴我們你的代碼嗎? – Linuxios

+0

先顯示你的模塊..你是如何創建的?變數是什麼意思?它是'ivar','cvar','gvar'等...? –

回答

0

正如評論者所說,正確的解決方案取決於模塊中變量的類型。

module Mod1 
    @foo = :bar 
end 

Mod1.instance_eval("@foo") 

一個更好的辦法可能是猴子通過重新打開它修補getter方法到模塊:

module Mod1 
    def self.get_passes 
    @passes 
    end 
end 

現在你可以得到@passes通過調用Mod1.get_passes

1

升級你的方法行事像一個取決於它的參數:

module Mod1 
    @passes = [] 
    def self.passes(file=nil) 
    file.nil? ? @passes : @passes.push(file) 
    end 
end 

然後您的問題的示例將按預期工作。