AnyMath 文档

精灵的公共软件管理方法

使用Genie框架创建简单应用程序的示例也在 社区AnyMath。

这里介绍了所有公共的项目管理方法。 精灵 使用框架 精灵。 要在Genie应用程序中使用它们,请使用以下命令连接 AnyMath 工具库 使用AnyMath 在你的代码(应用程序。jl)。

方法 精灵

engee.genie.eval(code::AbstractString)

在 AnyMath 工作区中执行指定的代码,不受已运行的 Genie 应用程序上下文限制。用于运行单个表达式、调试或动态执行代码,而无需重新启动应用程序。

参数

code::AbstractString :包含将在 AnyMath 工作空间中执行的 Julia 代码的字符串。

示例

engee.genie.eval("x = 5")
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.list()

显示所有已运行的Genie应用程序列表。

示例

engee.genie.list()
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(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(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(app_path::String)

停止正在运行的 Genie 应用程序。

参数

app_path::String :应用程序目录的路径。可以是相对路径或绝对路径。

示例

# 通过绝对路径停止应用程序
engee.genie.stop("/user/app.jl")

# 通过相对路径停止应用程序
engee.genie.stop("app.jl")