3

在 Julia 中,函数中的所有变量赋值默认都是局部的,但您可以使用global关键字来赋值给全局变量。如何将变量分配给外部但非全局范围?

4

2 回答 2

3

目前没有任何方法可以做到这一点。我们偶尔讨论过它,因为它是你不能做的一个范围界定行为,但我还没有看到一个真正令人信服的理由需要它。你是否有一个?

于 2013-12-19T04:17:54.597 回答
0

我想生成一些代码并使用 include_string 命令执行它:

不幸的是,'global' 关键字实际上对定义模块的文件(在模块 def 之外)范围内的变量没有任何影响。如果一个变量的范围在模块之外,In My Hands,只将它直接传递给函数,就可以访问它。

像这样:

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 关键字吗?有一个更好的方法吗??

于 2014-03-25T19:09:51.657 回答