工作流程提示
基于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中先前状态的影响,从而防止难以检测的错误。
基于修订的工作流程
无论您是在REPL还是在IJulia,您都可以通过以下方式提高您的开发技能https://github.com/timholy/Revise …jl[修订]。 通常,Revision可以配置为在每次启动Julia时运行。 请参阅https://timholy …github.io/Revise.jl/stable/[修订文件]。 配置后,Revise将使用`includet`(但不使用通常的`include`)监视任何上传的模块和上传到REPL的任何文件的文件更改。 然后,您可以编辑文件,更改将在不重新启动Julia会话的情况下生效。 标准工作流类似于上面描述的基于REPL的工作流,具有以下更改。
-
将模块中的代码放在下载路径的某个位置。 完成此任务有几个选项。 建议选择其中两个。 **对于长期项目,使用包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’文件更改源代码,并创建任何测试文件。
-
-
创建包
在下载代码之前,请确保Revision正在运行,例如使用"使用Revision",或者按照文档配置它以自动运行。
然后转到包含测试文件的目录(这里假设它是`"runtests。jl"'),并执行以下操作。
julia> using MyPkg julia> include("runtests.jl")
您可以在编辑器中迭代修改MyPkg中的代码,并使用`include("runtests重新运行测试。jl")'。 通常,您不需要重新启动Julia会话即可看到更改已生效(考虑到一些https://timholy …github.io/Revise.jl/stable/limits/[限制])。