2013-12-19 32 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关键字正确吗?有一个更好的方法吗??