据我所知,从文档和网上的几篇帖子中可以看出声明
include("myfile.jl")
只需获取myfile.jl中的代码并将其粘贴到调用文件(或控制台)中,用include语句替换该行。
如果我错了,请纠正我。我刚刚开始朱莉娅。但是,我还看到了朱莉娅创作者之一的以下评论:
"include works in the dynamically-current module, not the lexically-current one.
It is really a load-time function, not a run-time one."
动态电流和词汇电流有什么区别?
答案 0 :(得分:7)
这不是函数调用,因为如果myfile.jl
只是a = 2
而你include("myfile.jl")
,那么您可以在REPL中检查a = 2
。在a
将在不同范围内定义的函数中,然后在函数结束后擦除。所以这是一个明显的行为差异。这是一个示例REPL会话,展示了不同之处:
julia> a
ERROR: UndefVarError: a not defined
julia> function incl(file)
a = "not 2"
include(file)
@show Main.a
@show a
end
incl (generic function with 1 method)
julia> incl("myfile.jl")
Main.a = 2
a = "not 2"
"not 2"
julia> a
2
这就是“动态电流”与“词汇电流”的含义。从词法上讲,函数在其自己的范围内运行,只能从函数实际代码中访问 - 没有其他方法可以访问或更改局部变量。即使从函数内部调用,include
也始终在当前的全局范围内运行。 Julia的eval
函数的行为类似 - 您无法查看或更改eval
只有全局变量的局部变量。
答案 1 :(得分:0)
这意味着当您的应用程序启动时,您将立即使用此代码代替包含。运行应用程序中不会出现“Include”。这意味着如果你使用include,你的应用程序在加载时加载的速度可能会慢一些(这是不明显的,我提到它是为了更好地理解),但是它会运行include代替代码。加载时间在应用程序开始运行之前。