工作流程提示
以下是一些使用 Julia 高效工作的提示。
基于 REPL 的工作流程
如Julia REPL中所述,Julia 的 REPL 提供了丰富的功能,可促进高效的交互式工作流程。以下是一些可能会进一步增强您在命令行体验的提示。
基本编辑器/REPL 工作流程
最基本的 Julia 工作流程涉及使用文本编辑器与 julia 命令行结合使用。常见的模式包括以下元素
将正在开发的代码放在临时模块中。创建一个文件,例如
Tmp.jl,并在其中包含module Tmp export say_hello say_hello() = println("Hello!") # your other definitions here end将您的测试代码放在另一个文件中。创建另一个文件,例如
tst.jl,看起来像include("Tmp.jl") import .Tmp # using .Tmp # we can use `using` to bring the exported symbols in `Tmp` into our namespace Tmp.say_hello() # say_hello() # your other test code here并包含对
Tmp内容的测试。或者,您可以将测试文件的内容包装在模块中,例如module Tst include("Tmp.jl") import .Tmp #using .Tmp Tmp.say_hello() # say_hello() # your other test code here end这样做的好处是,您的测试代码现在包含在一个模块中,并且不使用
Main中的全局范围进行定义,这更加整洁。使用
include("tst.jl")在 Julia REPL 中includetst.jl文件。重复使用。冲洗。重复。在
julia命令提示符处探索想法。将好主意保存在tst.jl中。要执行tst.jl,请在它更改后,只需再次include它。
基于浏览器的
有几种方法可以在浏览器中与 Julia 交互
基于 Revise 的工作流程
无论您是在 REPL 还是在 IJulia 中,通常可以使用 Revise 来改善您的开发体验。通常,可以将 Revise 配置为在每次启动 julia 时启动,如 Revise 文档中的说明。配置好后,Revise 将跟踪对任何已加载模块中的文件的更改,以及对使用 includet(但不是使用普通 include)加载到 REPL 中的任何文件的更改;然后,您可以编辑这些文件,并且这些更改将生效,而无需重新启动 julia 会话。标准工作流程类似于上面的基于 REPL 的工作流程,但有以下修改
将您的代码放在您的加载路径上的某个模块中。实现这一点有几种选择,其中两个推荐的选择是
对于长期项目,使用 PkgTemplates
using PkgTemplates t = Template() t("MyPkg")这将在您的
.julia/dev目录中创建一个空白包,"MyPkg"。请注意,PkgTemplates 允许您通过其Template构造函数控制许多不同的选项。在下面的步骤 2 中,编辑
MyPkg/src/MyPkg.jl以更改源代码,并编辑MyPkg/test/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以更改源代码,并创建任何您选择的测试文件。
开发您的包
在加载任何代码之前,确保您正在运行 Revise:说
using Revise或按照其文档中的说明将其配置为自动运行。然后导航到包含您的测试文件(此处假定为
"runtests.jl")的目录,并执行以下操作julia> using MyPkg julia> include("runtests.jl")您可以迭代地修改 MyPkg 中的代码并在编辑器中重新运行测试,方法是使用
include("runtests.jl")。通常,您不需要重新启动 Julia 会话即可使更改生效(受一些限制)。