Julia 在最近的外部范围内捕获变量

Julia 在最近的外部范围内捕获变量,julia,Julia,在Julia中,默认情况下,函数中的所有变量赋值都是局部变量,但您可以使用global关键字来指定全局变量。如何将变量分配给外部但非全局作用域?目前没有任何方法。我们偶尔会讨论它,因为这是一个范围界定行为,你不能做,但我还没有看到一个真正令人信服的理由需要它。有吗?我想生成一些代码,并使用include\u string命令执行它: 不幸的是,“global”关键字实际上对 在定义模块的文件中限定范围的变量 (位于def模块外部)。如果变量的作用域超出 模块,在我手中,只将其直接传递到函数中,就

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

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

我想生成一些代码,并使用include\u string命令执行它:

不幸的是,“global”关键字实际上对 在定义模块的文件中限定范围的变量 (位于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)
我的回答也是一个问题:
我在这里使用的全局关键字正确吗?是否有更好的方法来实现这一点???

与您希望更改全局变量的原因相同。然而,无论如何,我将只使用纯函数。