工作流程提示
以下是一些使用 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 中include
tst.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 会话即可使更改生效(受一些限制)。