AnyMath 文档

工作流程提示

以下是与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的工作流,但进行了以下修改:

  1. 将您的代码放在加载路径上的某个模块中。 有几个选项可以实现这一点,其中两个推荐的选择是: **对于长期项目,使用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 更改源代码,并创建您选择的任何测试文件。

  1. 开发您的软件包 _before_加载任何代码,确保您正在运行Revise:say 使用修订 或者按照它的文档配置它自动运行。 然后导航到包含测试文件的目录(这里假设为 "符咒。jl")并执行以下操作:

  julia> using MyPkg

  julia> include("runtests.jl")

您可以在编辑器中迭代修改MyPkg中的代码,然后使用 include("runtests.jl"). 您通常不需要重新启动Julia会话才能看到更改生效(取决于几个https://timholy.github.io/Revise.jl/stable/limitations/[限制])。