AnyMath 文档

软件脚本管理

另请参见:程序模型控制的应用。

这里介绍了所有 engee.script 程序控制方法。有关 engee 方法的介绍,请参阅文章项目管理的公共方法 。

脚本 "方法

engee.script.edit(path::String)

在编辑器中打开位于路径path (包括文件名和扩展名)的交互式脚本。如果该文件不存在,则会在指定路径下创建一个空脚本文件并在编辑器中打开。如果path 中指定的扩展名与 '.ngscript' 不一致,则该函数将返回错误ErrorException("path should end with '.ngscript' extension") 。

示例

# 在脚本编辑器中打开脚本file 。ngscript Engee
engee.script.edit( "file.ngscript" )
engee.script.run(path::String; isolate::Bool = false)

运行指定路径下的脚本。返回脚本中最后一个顶级表达式的结果。

参数- path::String :脚本的绝对路径。

  • isolate::Bool = false :若值为true ,则脚本在隔离环境中执行。默认值为false 。若值为false ,脚本在主用户环境中(Main模块)执行。所有全局或顶层声明的变量在执行结束后仍会被保留。 当true 时,脚本将在临时隔离环境中执行。执行过程中创建的所有变量在脚本结束时均不会保留。

示例

考虑文件foo.ngscript ,其中包含唯一的代码单元:

x = 10
y = try
    push!(a, :foo)  # 尝试将 :foo 添加到现有数组中 `a`
    5               # 如果一切正常——将y 赋值为5
catch _
    3               # 如果发生错误——将y 赋值为3
end
x + y               # 返回x 与y的和

在用户环境中(isolate = false )执行将修改变量x 和y ,并向数组а 中添加:foo :

a = Symbol[:bar, :baz]  # 原始数组
x = y = 0               # 脚本运行前的变量
(engee.script.run("foo.ngscript"), x, y, a)
# ⇒ (15, 10, 5, [:bar, :baz, :foo])
# 脚本修改了变量x 和y ,并在数组a中添加了 :foo

在隔离环境中(isolate = true )执行时,该脚本不会影响外部变量,且所做的更改也不会被保存:

# 原始数组
a = Symbol[:bar, :baz]

# 脚本运行前的变量
x = y = 0
(engee.script.run("foo.ngscript"; isolate = true), x, y, a)
# ⇒ (13, 0, 0, [:bar, :baz])
# 脚本未影响外部变量——更改未被保存