.jl文件:应用场景和功能
审查致力于 .jl 文件。 即,应用程序,如:
-创建自定义模块
-使用某些场景
-调试代码
-启动服务器应用程序
创建自定义模块
与文件不同 .ngscript,扩展名的文件 .jl 您可以使用它来创建自己的模块。
考虑2个文件。
MyModule.jl_MyScriptModule.ngscript
这两个文件都包含具有相同内容的模块。: MyModule 和 MyScriptModule 相应地。
但对于 .jl-然后我们可以使用连接模块:
include("MyModule.jl")
using .MyModule
area(Rectangle(2,3))
但是,使用 .ngscript,将不再可能连接模块:
try
include("_MyScriptModule.ngscript")
using .MyScriptModule
area(Rectangle(2,3))
catch e
println(e)
end
自动执行操作
想象一下,有一个学生和他们的存储库与家庭作业的表。
/姓/和。 /O./Git仓库|
| ------- | --- | --- | --------------------------------------- |
/伊万诺夫/I./和。 |git@github.com:Ivanov/Julia_course.git |
|巴甫洛夫/P./P.||
|彼得罗夫/P./P.|git@github.com:Petrov/Julia_course.git |
/西多罗夫/I./P.|git@github.com:Sidorov/Julia_course.git |
老师一次分几个小组教授某一学科.
然后,使用 .jl-文件可以检查作业
通过将所有文件自动复制到目录
对应的文件所在的位置。 .jl-文件。
请注意,目前目录中没有文件夹。
让我们通过执行下面的单元格来重新创建这种情况。
执行单元格代码后,文件夹将出现在您的目录中:
jl-档案
──伊万诺夫
,──Seminar_1
,──彼得罗夫
,──Seminar_1
,──西多罗夫
,──Seminar_1
`` A
将在下一个单元格中给出正在执行的操作的描述。
run(`bash -c """
julia generate_student_folders.jl students_group_1.csv Семинар_1
"""`)
-功能 run 它可以运行命令。
bash -c表示"在bashshell中执行command"。julia-juila программа.jl аргумент_1 аргумент_2 ...generate_student_folders.jl-创建文件夹并在其中克隆学生存储库的文件ARGS[1]-包含数据的文件的名称(students_group_1.csv)ARGS[2]-需要检查的活动/作业的名称(Семинар_1)
为什么不替换脚本 generate_student_folders.jl 类似的功能?
使用脚本的方便之处在于它的内部,[不像функции](https://engee.com/helpcenter/stable/ru/julia/manual/faq.html#могу-ли-я-использовать-using-или-import-внутри-функции),可以使用 using 和 import.
也就是说,我们可以调用一个单独的过程。 连接其中的软件包 执行操作 回到我们的主程序。
注意我们已经使用了包
CSV程序内部generate_student_folders.jl但是这个包在我们的脚本中没有连接
try
df = CSV.read("students_group_1.csv", DataFrame);
catch e
sprint(showerror,e)
end
调试代码
尽管在脚本中调试代码也是可能的。, .jl 文件比它们有优势。 这就是为什么:
.ngscript 代表 json-文件。
例如,文件 _sqrt_16.ngscript 代表 json-包含的文件
# 文件中关于第一个文本单元格的部分
"id":"ffe36da1",
"cell_type":"标记",
"来源":[
"价值 $\\sqrt{16}$"
],
# 关于第一代码单元格的代码的一部分
"id":"a4b6a26f",
"cell_type":"代码",
"来源":[
"sqrt(16)"
],
也就是说,事实上,调试这样的文件并不是一项微不足道的任务。
让我们确定一下。
调试/调试 .ngscript 档案
创建函数 circle_area 在电流 .ngscript-文件。
"Площадь круга по радиусу"
function circle_area(r)
π*r^2
end
使用 @functionloc 您可以找出要调用的方法的文件名和字符串。
@functionloc circle_area(2)
正如你所看到的,文件名没有被返回,并且单元格的第2行被指示为行(在描述我们的函数"区域陡峭的半径"之后)。
调试/调试 .jl-档案
然而,对于 .jl-文件中没有这样的问题。 和文件中声明的位置 MyModule.jl 功能 area 这是相当肯定的推断:
@functionloc area(Rectangle(2,3))
.jl-文件作为应用程序的一部分
开发应用程序使用,例如,[精灵](https://engee.com/helpcenter/stable/ru/feature/genie-engee.html ),有必要在应用程序目录内部创建 .jl 文件,而不是脚本。
所以,应用程序的主文件应该是一个名称为 app.jl.