工作流程提示
以下是与Julia高效合作的一些提示。
基于REPL的工作流
正如已经阐述的那样 Julia REPL,Julia的REPL提供了丰富的功能,促进了高效的交互式工作流。 以下是一些可能进一步增强命令行体验的提示。
一个基本的编辑器/REPL工作流程
最基本的Julia工作流程涉及将文本编辑器与 朱莉娅 命令行。
创建一个文件,说 Tmp。jl,并在其中包括
module Tmp
say_hello() = println("Hello!")
# Your other definitions here
end # module
using .Tmp
然后,在同一目录中,启动Julia REPL(使用 朱莉娅 命令)。 按如下方式运行新文件:
julia> include("Tmp.jl")
julia> Tmp.say_hello()
Hello!
在REPL中探索想法。 保存好的想法 Tmp。jl. 要在文件更改后重新加载文件,只需 包括 又来了。
上面的关键是你的代码封装在一个模块中。 这样你就可以编辑 结构体 定义和删除方法,而无需重新启动Julia。
(解释: 结构体定义后不能编辑s,也不能删除方法。 但是你_can_复盖一个模块的定义,这是我们做什么,当我们重新-包括("Tmp.jl")).
此外,在模块中封装代码可以保护它不受REPL中先前状态的影响,从而保护您免受难以检测的错误。
基于浏览器的工作流
有几种方法可以在浏览器中与Julia交互:
*通过使用冥王星笔记本https://github.com/fonsp/Pluto.jl[冥王星.jl] *通过使用Jupyter笔记本https://github.com/JuliaLang/IJulia.jl[IJulia.jl]
基于修订的工作流
无论你是在REPL还是在IJulia,你通常都可以通过https://github.com/timholy/Revise.jl[修订]。根据julia中的说明,配置修订以在julia启动时启动是很常见的。https://timholy.github.io/Revise.jl/stable/[修订文件]。 配置完成后,Revise将跟踪任何已加载模块中的文件以及加载到REPL中的任何文件的更改 包括 (但不是简单的 包括);然后,您可以编辑文件,更改生效,而无需重新启动julia会话。 标准工作流类似于上面基于REPL的工作流,但进行了以下修改:
-
将您的代码放在加载路径上的某个模块中。 有几个选项可以实现这一点,其中两个推荐的选择是: **对于长期项目,使用https://github.com/invenia/PkgTemplates.jl[PkgTemplates]:
using PkgTemplates t = Template() t("MyPkg")这将创建一个空白包,
"MyPkg",在你的.朱莉娅/dev目录。 请注意,PkgTemplates允许您通过其控制许多不同的选项。模板构造函数。 在下面的步骤2中,编辑MyPkg/src/MyPkg的。jl更改源代码,以及MyPkg/测试/runtests.jl为了测试。
*对于"丢弃"项目,您可以通过在临时目录中完成工作来避免任何清理的需要(例如, /tmp).
导航到您的临时目录并启动Julia,然后执行以下操作:
+
pkg> generate MyPkg # type ] to enter pkg mode
julia> push!(LOAD_PATH, pwd()) # hit backspace to exit pkg mode
+
如果重新启动Julia会话,则必须重新发出该命令。 LOAD_PATH.
在下面的步骤2中,编辑 MyPkg/src/MyPkg的。jl 更改源代码,并创建您选择的任何测试文件。
-
开发您的软件包 _before_加载任何代码,确保您正在运行Revise:say
使用修订或者按照它的文档配置它自动运行。 然后导航到包含测试文件的目录(这里假设为"符咒。jl")并执行以下操作:
julia> using MyPkg
julia> include("runtests.jl")
您可以在编辑器中迭代修改MyPkg中的代码,然后使用 include("runtests.jl"). 您通常不需要重新启动Julia会话才能看到更改生效(取决于几个https://timholy.github.io/Revise.jl/stable/limitations/[限制])。