【问题标题】:Change REPL module/namespace in Julia在 Julia 中更改 REPL 模块/命名空间
【发布时间】:2016-12-09 20:00:58
【问题描述】:
我正在寻找一种在 REPL 中“输入”模块的方法,以便我可以访问 所有 符号而无需限定(不仅仅是导出的符号)和任何函数 (re)在 REPL 中定义的进入指定的模块。 (基本上这是 Common Lisp 的 in-package 宏的功能。)
这在面向 REPL 的工作流中很有用,因为我可以在 REPL 中编写与我正在开发的模块中相同的代码。
手册 recommends a workflow 我在其中限定了所有内容,但这似乎很烦人。
【问题讨论】:
标签:
module
namespaces
julia
read-eval-print-loop
【解决方案1】:
不久前,我创建了一个名为 REPLMods.jl 的包。应该是擦亮了,但我没时间。
我与 Julia 的核心成员进行了交谈,他们有兴趣在事情清理干净后将其合并到基础中,但同样,没有时间!
【解决方案2】:
我知道这不是您要问的,但是以防万一您(或该问题的未来访问者)没有想到“显而易见”,假设您加载了一个带有烦人的繁琐名称的模块,例如
import LaTeXStrings
而且您不想一直键入 LaTeXStrings 只是为了探索它的可访问性,即
LaTeXStrings.[TAB]
您可以将导入的模块作为一个整体分配给另一个变量,即
const l = LaTeXStrings
我敢肯定,在没有更合适的内置解决方案的情况下,至少输入 l.[TAB] 比输入 LaTeXStrings.[TAB] 更容易接受 :)
(我觉得很奇怪,事实上,julia 似乎不支持import LaTeXStrings as l 语法......)
【讨论】:
-
这也可以使用宏轻松完成,例如我在~/.juliarc.jl 中使用的@import:@import Foo as f,它完全扩展到您的示例。
【解决方案3】:
现在是 2020 年,我使用的是 Julia 1.4,但无法让 REPLMods.jl 工作。我认为暂时以下似乎已经足够了: