捕获最近的外部范围中的变量

时间:2013-12-19 01:05:44

标签: julia

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

2 个答案:

答案 0 :(得分:3)

目前没有办法做到这一点。我们偶尔会讨论它,因为它是你不能做的一种范围行为,但我还没有看到一个非常令人信服的理由需要它。你有吗?

答案 1 :(得分: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)

我的回答也是一个问题: 我在这里正确使用全局关键字吗?有更好的方法吗?