AnyMath 文档

精灵的公共软件管理方法

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

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

方法 精灵

engee.genie.eval(code::AbstractString)

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

参数

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

示例

engee.genie.eval("x = 5")
include([mapexpr::Function,] path::AbstractString)

在包含该模块的全局作用域中求值输入源文件的内容。 每个Module (除使用baremodule 定义的模块外)都包含一个私有的、带有一个参数的include 定义,该函数用于在该模块内解析该文件,供该模块内部使用。返回输入文件中最后一个被求值表达式的结果。在包含文件时,会将任务本地包含路径设置为包含该文件的目录。 对include 的嵌套调用将以此路径为基准进行搜索。该函数通常用于交互式加载源代码,或合并被拆分为多个源文件的包中的文件。参数path 将使用normpath进行规范化处理,该方法会解析诸如.. 之类的相对路径标记,并将/ 转换为适当的路径分隔符。

可选的第一个参数mapexpr 可用于在评估包含的代码之前对其进行转换:对于path 中每个已解析的表达式exprinclude 函数实际上会评估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.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")