精灵的公共软件管理方法
方法 精灵
#
engee.genie.eval — Method
engee.genie.eval(code::AbstractString)
在 AnyMath 工作区中执行指定的代码,不受已运行的 Genie 应用程序上下文限制。用于运行单个表达式、调试或动态执行代码,而无需重新启动应用程序。
参数
code::AbstractString :包含将在 AnyMath 工作空间中执行的 Julia 代码的字符串。
示例
engee.genie.eval("x = 5")
#
engee.genie.include — Method
Engee.Genie.include(mapexpr::Function, path::AbstractString)
在包含该模块的全局作用域中对输入源文件的内容进行求值。每个Module (除那些通过baremodule 定义的之外)都有一个私有函数定义include ,该函数接受一个参数,用于在该模块内对文件进行求值,以便在该模块内部使用。 返回输入文件中最后一个被求值表达式的结果。在包含该文件时,会将包含该文件的目录设置为本地路径。 嵌套调用的 include 将以此路径为基准进行搜索。该函数通常用于交互式加载源代码,或将拆分为多个源文件的包中的文件合并起来。
参数
-
mapexpr:可选的第一个参数,可用于在
计算之前转换要包含的代码:对于path 中每个已解析的表达式expr ,函数include 实际上会计算mapexpr(expr) 。如果省略该参数,mapexpr 默认取值为identity 。
-
path:通过normpath进行规范化,该函数会解析诸如..及 等相对路径元素,并将/转换为相应的路径分隔符。
!!! 注: 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")