在Julia中,默认情况下,函数中的所有变量赋值都是局部的,但您可以使用global
关键字来分配全局变量。如何将变量分配给外部但非全局范围?
答案 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)
我的回答也是一个问题: 我在这里正确使用全局关键字吗?有更好的方法吗?