Engee 文档

工作流程提示

以下是与Julia有效合作的一些提示。

基于REPL的工作流程

章中已经提到过 REPL Julia,REPL Julia提供了广泛的功能,以促进有效的交互式工作流程。 以下是一些可以使使用命令行更加高效的提示。

编辑器或REPL的基本工作流程

最基本的Julia工作流涉及将文本编辑器与julia命令行结合使用。

创建一个文件,说’Tmp。jl',并在其中包括以下片段。

module Tmp

say_hello() = println("Hello!")

# Место для других ваших определений

end # модуль

using .Tmp

然后在同一目录中运行REPL Julia(使用`julia`命令)。 执行新文件,如下所示:

julia> include("Tmp.jl")

julia> Tmp.say_hello()
Hello!

分析REPL中的想法。 将好的想法保存到文件’Tmp。jl'。 要在更改文件后重新加载文件,只需再次使用`include`启用它。

上述步骤中的关键点是你的代码封装在一个模块中。 现在,您可以编辑结构定义(struct)并删除方法,而无需重新启动Julia。

(说明:Structures(struct')不能在定义后编辑,也不能删除方法。 但是你可以复盖模块定义,这就是我们重用`include("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[修订]。 通常,Revision可以配置为在每次启动Julia时运行。 请参阅https://timholy …​github.io/Revise.jl/stable/[修订文件]。 配置后,Revise将使用`includet`(但不使用通常的`include`)监视任何上传的模块和上传到REPL的任何文件的文件更改。 然后,您可以编辑文件,更改将在不重新启动Julia会话的情况下生效。 标准工作流类似于上面描述的基于REPL的工作流,具有以下更改。

  1. 将模块中的代码放在下载路径的某个位置。 完成此任务有几个选项。 建议选择其中两个。 **对于长期项目,使用包https://github.com/invenia/PkgTemplates.jl [PkgTemplates]。

    using PkgTemplates
    t = Template()
    t("MyPkg")

    将在`中创建一个空包`"MyPkg"`。julia/dev’目录。 请注意,PkgTemplates允许您使用"模板"构造函数管理许多不同的选项。

    在下面的步骤2中,编辑’MyPkg/src/MyPkg。jl’文件更改源代码,和’MyPkg/test/runtests。测试的jl’文件。

    • 在试用项目中,您可以通过在临时目录(例如`/tmp`)中执行工作来避免清理。

      导航到临时目录,启动Julia,然后按照以下步骤操作。

      'julia-repl pkg>生成MyPkg#type]进入pkg模式julia>push!(LOAD_PATH,pwd())#点击退格键退出pkg模式`如果你重新启动你的Julia会话,你将不得不重新发出修改`LOAD_PATH`的命令。 在下面的步骤2中,编辑’MyPkg/src/MyPkg。jl’文件更改源代码,并创建任何测试文件。

  2. 创建包

    在下载代码之前,请确保Revision正在运行,例如使用"使用Revision",或者按照文档配置它以自动运行。

    然后转到包含测试文件的目录(这里假设它是`"runtests。jl"'),并执行以下操作。

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

    您可以在编辑器中迭代修改MyPkg中的代码,并使用`include("runtests重新运行测试。jl")'。 通常,您不需要重新启动Julia会话即可看到更改已生效(考虑到一些https://timholy …​github.io/Revise.jl/stable/limits/[限制])。