工作流程建议

这里是高效使用 Julia 的一些建议。

基于 REPL 的工作流程

正如在 Julia REPL 中演示的那样,Julia 的 REPL 为高效的交互式工作流程提供了丰富的功能。这里是一些可能进一步提升你在命令行下的体验的建议。

一个基本的编辑器 / REPL 工作流程

最基本的 Julia 工作流程是将一个文本编辑器配合 julia 的命令行使用。一般会包含下面一些步骤:

  • 把还在开发中的代码放到一个临时的模块中。新建一个文件,例如 Tmp.jl,并放到模块中。
  1. ```julia
  2. module Tmp
  3. export say_hello
  4. say_hello() = println("Hello!")
  5. # your other definitions here
  6. end
  7. ```
  • 把测试代码放到另一个文件中。新建另一个文件,例如 tst.jl,开头为

    1. include("Tmp.jl")
    2. import .Tmp
    3. # using .Tmp # we can use `using` to bring the exported symbols in `Tmp` into our namespace
    4. Tmp.say_hello()
    5. # say_hello()
    6. # your other test code here

    并把测试作为 Tmp 的内容。或者,你可以把测试文件的内容打包到一个模块中,例如

  1. ```julia
  2. module Tst
  3. include("Tmp.jl")
  4. import .Tmp
  5. #using .Tmp
  6. Tmp.say_hello()
  7. # say_hello()
  8. # your other test code here
  9. end
  10. ```
  11. 优点是你的测试代码现在包含在一个模块中,并且不会在 `Main` 的全局作用域中引入新定义,这样更加整洁。
  • 使用 include("tst.jl") 来在 Julia REPL 中 include tst.jl 文件。

  • 打肥皂,冲洗,重复。(译者注:此为英语幽默,被称为“洗发算法”julia REPL 中摸索不同的想法,把好的想法存入 tst.jl。要在 tst.jl 被更改后执行它,只需再次 include 它。

基于浏览器的工作流程

也可以通过 IJulia 在浏览器中与 Julia REPL 进行交互,请到该库的主页查看详细用法。

基于Revise的工作流程

无论你是在REPL还是在IJulia,你通常可以通过 Revise优化 你的开发经历。 通常情况,无论何时启动Julia,就请按照Revise文档中的说明配置好Revise。 一旦配置好,Revise将跟踪任何加载模块中的文件变化。 和任何用includet加载到 REPL 的文件 (但不包括普通的include); 然后你就可以编辑这些文件,并且更改会在不重新启动julia会话的情况下生效。 标准工作流与上面基于 REPL 的工作流类似,区别如下:

  1. 把你的代码放到一个在你的加载路径里的模块中。 要这样做有很多种方法,通常推荐以下两种选择:

  1. ```julia
  2. using PkgTemplates
  3. t = Template()
  4. t("MyPkg")
  5. ```
  6. 这将在 `.julia/dev` 目录中创建一个空白包`"MyPkg"`
  7. 请注意,通过它的 `Template` 构造器,PkgTemplates 允许控制许多不同的选项。
  8. 在下面的第 2 步中,编辑 `MyPkg/src/MyPkg.jl` 以更改源代码,并编辑 `MyPkg/test/runtests.jl` 以进行测试。
  • 对于“一次性”项目,您可以通过在临时目录(例如 /tmp)中进行工作来避免任何清理需求。
  1. 切换到临时目录并启动 Julia,然后执行以下操作:
  2. ```julia
  3. pkg> generate MyPkg # type ] to enter pkg mode
  4. julia> push!(LOAD_PATH, pwd()) # hit backspace to exit pkg mode
  5. ```
  6. 如果你重新启动 Julia 会话,则必须重新发出修改 `LOAD_PATH` 的命令。
  7. 在下面的第 2 步中,编辑 `MyPkg/src/MyPkg.jl` 以更改源代码,并创建你选择的任何测试文件。
  1. 构建你自己的包

    在加载任何代码之前, 确保 Revise 已经被启用: using Revise 或者按照教程设置自动加载。

然后切换到包含测试文件(假设文件为"runtests.jl")的目录下,并:

  1. julia> using MyPkg
  2. julia> include("runtests.jl")

你可以修改在 MyPkg 文件夹中的代码然后用include("runtests.jl")重新跑一遍测试。 通常,你可能需要重新启动Julia 会话来使得这些变化生效(受一些 限制)。