精灵的公共软件管理方法
方法 精灵
#
engee.genie.eval — Method
engee.genie.eval(code::AbstractString)
在 AnyMath 的工作区中执行指定的代码,该操作不属于正在运行的 Genie 应用程序的上下文范围。用于运行单个表达式、调试或动态执行代码,而无需重新启动应用程序。
参数
code::AbstractString :包含将在 AnyMath 工作空间中执行的 Julia 代码的字符串。
示例
engee.genie.eval("x = 5")
#
engee.genie.include — Method
include([mapexpr::Function,] path::AbstractString)
在包含该模块的全局作用域中求值输入源文件的内容。 每个Module (除使用baremodule 定义的模块外)都包含一个私有的、带有一个参数的include 定义,该函数用于在该模块内解析该文件,供该模块内部使用。返回输入文件中最后一个被求值表达式的结果。在包含文件时,会将任务本地包含路径设置为包含该文件的目录。 对include 的嵌套调用将以此路径为基准进行搜索。该函数通常用于交互式加载源代码,或合并被拆分为多个源文件的包中的文件。参数path 将使用normpath进行规范化处理,该方法会解析诸如.. 之类的相对路径标记,并将/ 转换为适当的路径分隔符。
可选的第一个参数mapexpr 可用于在评估包含的代码之前对其进行转换:对于path 中每个已解析的表达式expr ,include 函数实际上会评估mapexpr(expr) 。如果省略该参数,mapexpr 默认使用 identity。
使用 Base.include 将文件评估到另一个模块中。
!!! 注意 Julia 的语法转换机制会识别顶级语境中对字面量include 的显式调用,并插入隐式@Core.latestworld ,以使被包含的定义对后续代码可见。但请注意,这种识别仅是 语法层面的。也就是说,赋值const myinclude = include 可能需要在myinclude 之后显式调用@Core.latestworld 。 [IMPORTANT]
.Совместимость: Julia 1.5
传递mapexpr 参数需要 Julia 1.5。
#
engee.genie.recv — Method
engee.genie.recv(wsVarName::AbstractString; context::Module=GenieAPI )
在 Genie 应用程序运行期间,从指定的上下文(模块)中返回 AnyMath 工作空间中的变量值。
默认情况下,变量会在模块GenieAPI 中进行查找,但如有必要,可以通过参数context 显式指定其他模块。因此,如果变量定义在其他模块中,则需使用参数context 来指定应在哪个命名空间中进行查找。
参数
-
wsVarName::AbstractString:要获取其值的变量名。 -
context::Module=GenieAPI:用于搜索变量的模块。如果变量不属于GenieAPI模块,则需显式指定。
示例
# 从模块Main中获取变量x 的值
engee.genie.recv("x", Main)
# 从默认模块中获取变量a 的值
engee.genie.recv("a")
# 从用户自定义模块中获取变量value 的值
engee.genie.recv("value"; context=MyModule)
#
engee.genie.send — Method
engee.genie.send(wsVarName::AbstractString, value::Any)
在 Genie 上运行应用程序时,将值value 保存到 AnyMath 工作区中的变量wsVarName 中。
如果此前不存在同名的变量,则会自动创建该变量。 该函数便于将 Genie 应用程序中的中间结果或用户数据传递到 AnyMath 会话中。
参数
-
wsVarName::AbstractString: 要赋值的变量名称。 -
value::Any: 将保存到变量中的值。 可以是任何类型。
示例
# 将值 124 赋给变量x
engee.genie.send("x", 124)
# 将字符串保存在变量message中
engee.genie.send("message", "Hello")
#
engee.genie.start — Method
engee.genie.start(app_path::String; devel::Bool=false, log_file::String="", open_url::Bool=false)
启动指定路径下的 Genie 应用程序。
启动后,该函数返回GenieApplicationStatus ,其中包含应用程序的链接(该链接也会以 +… at 'https://…/genie/<AppName>/')+的形式显示在控制台中)。该链接可在新标签页/窗口中打开,或复制后手动打开。
在使用engee.genie.start 命令前,请确保:若应用程序是一个目录,则该目录中必须包含一个带有应用程序代码且扩展名为 .jl 的文件。 此外,请删除 config 和 *.toml 文件(如果存在)。
参数
-
app_path::String: 应用程序目录的路径。可以是相对路径或绝对路径。 -
devel::Bool=false: 用于启用开发模式的参数,在此模式下,代码更改无需重启应用程序即可生效。 -
log_file::String="":用于指定日志文件路径的参数。若未指定,则日志不会单独保存。 -
open_url::Bool=false:若true,则 AnyMath 会自动在浏览器中打开应用程序的 URL(该链接也可在返回的状态中获取)。
示例
# 通过应用程序文件app.jl 启动Genie ,不启用开发模式且不记录日志
engee.genie.start("/user/app.jl")
# 通过应用程序文件app.jl 启动Genie ,启用开发模式并记录日志
engee.genie.start("/user/app.jl", devel=true, log_file="/user/logs.txt")
# 启动并在浏览器中自动打开应用程序
engee.genie.start("RadarCalculate", open_url=true)
#
engee.genie.stop — Method
engee.genie.stop(app_path::String)
停止已运行的 Genie 应用程序。
参数
app_path::String :应用程序目录的路径。可以是相对路径或绝对路径。
示例
# 按绝对路径停止应用程序
engee.genie.stop("/user/app.jl")
# 按相对路径停止应用程序
engee.genie.stop("app.jl")