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