在 Julia 中更改 REPL module/namespace

Change REPL module/namespace in Julia

我正在寻找一种方法来 "enter" REPL 中的一个模块,这样我就可以访问 所有 符号而无需限定(不仅仅是导出的) ,并且在 REPL 中定义的任何(重新)函数都会进入指定的模块。 (基本上这是 Common Lisp 的 in-package 宏的功能。)

这在面向 REPL 的工作流中很有用,因为我可以在 REPL 中编写与我正在开发的模块中相同的代码。

手册 recommends a workflow 我在其中限定了所有内容,但这看起来很烦人。

我不久前为此启动了一个名为 REPLMods.jl 的软件包。应该可以打磨一下,可惜没时间。

我与 Julia 的核心成员谈过,他们有兴趣在事情清理干净后将其合并到 base 中,但同样,没时间了!

我知道这不是您要问的,但以防万一 'obvious' 没有发生在您(或该问题的未来访问者)身上,假设您加载了一个令人讨厌的模块繁琐的名称,例如

import LaTeXStrings

而且您不希望一直键入 LaTeXStrings 只是为了探索其可访问性,即

LaTeXStrings.[TAB]

您可以将导入的模块作为一个整体分配给另一个变量,即

const l = LaTeXStrings

我敢肯定,在没有更合适的内置解决方案的情况下,至少输入 l.[TAB] 而不是 LaTeXStrings.[TAB] 更容易接受 :)

(我觉得很奇怪,事实上,julia 似乎不支持 import LaTeXStrings as l 语法...)

现在是 2020 年,我正在使用 Julia 1.4,但无法使 REPLMods.jl 正常工作。我认为以下内容暂时已经足够好了:

  • ExportAll.jl - see Exporting all symbols in Julia 讨论(只是那个不应该用ExportAll来代替正常的export
  • Revise.jl