2013-12-19 66 views

回答

3

目前沒有辦法做到這一點。我們偶爾會討論它,因爲它是你不能做的一個範圍界定行爲,但是我還沒有看到需要它的真正令人信服的理由。你是否有一個?

+0

您想更改全局變量的原因相同。但是,我將只使用純函數。 – ThePiercingPrince

0

我想要生成一些代碼,並且它使用include_string命令執行:

不幸的是,「全球性」的關鍵字並沒有真正對那些在其中一個模塊是該文件中作用域 變量任何影響定義爲 (模塊def之外)。如果一個變量的作用域在 模塊之外,那麼只有將它直接傳遞給函數,才能訪問 它。

像這樣:

module my_mod 

function IDontWork(x:int) 
    global mp 
    include_string("Show(mp)") 
end #function IDontWork 

function IWork(x:int, mp::Minipipe) 
    include_string("Show(mp)") 
end #function IWork 

function Show(mp::Minipipe) 
    println(mp.txt) 
end #Show 
end #my_mod 

#mp declared in global scope: 
mp = Minipipe() 

#FAILS: 
my_mod.IDontWork(2) 

#Only Way it WORKS: 
my_mod.IWork(2, mp) 

我的答案也是一個問題: 我使用global關鍵字正確嗎?有一個更好的方法嗎??