具体包括什么?

时间:2016-12-22 17:20:59

标签: julia

据我所知,从文档和网上的几篇帖子中可以看出声明

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."

动态电流和词汇电流有什么区别?

2 个答案:

答案 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代替代码。加载时间在应用程序开始运行之前。