【问题标题】:Suppress warning about conflict with existing identifier禁止有关与现有标识符冲突的警告
【发布时间】:2020-01-12 00:49:25
【问题描述】:

我正在启动 REPL,然后多次使用 include("./main.jl") 来加快脚本加载速度。

第一次运行后它开始给出警告:

WARNING: replacing module Lib.
WARNING: using Lib.somefn in module Main conflicts with an existing identifier.

如何抑制?

【问题讨论】:

  • “多次加载文件以加快脚本加载”是什么意思。这似乎没有意义。如果按照第一个答案的作者的理解,您愿意编辑和澄清吗?
  • @ARamirez julia 第一次启动非常慢,所以常见的技术是启动 REPL 并在每次更改后使用 include("./main.jl") 重新加载文件,而不是作为脚本重新启动它。

标签: julia


【解决方案1】:

您应该使用Revise,然后使用includet("./main.jl")(注意includet 末尾的't',代表“轨道”)。从那时起,每当您对文件“main.jl”进行更改时,这些更改都会反映在 REPL 中,而不会发出警告。

例子:

  • 文件 main.jl:
module Lib

somefn() = 42

end #module
  • REPL:
julia> using Revise
julia> includet("main.jl")
julia> Lib.somefn()
42

# modify the definition of somefn in main.jl and save the file

julia> Lib.somefn()
43



注意:如果您的系统上尚未安装Revise,您可能需要先安装它:

julia> using Pkg
julia> Pkg.add("Revise")

【讨论】:

  • 有没有办法让 Revise 也自动重新包含更改的脚本?
  • 您的意思是:更新函数定义并重新运行部件函数调用?如果是,则否:Revise 不会这样做,它只会更新代码的“声明性”部分。
猜你喜欢
  • 1970-01-01
  • 2015-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2020-03-20
  • 1970-01-01
相关资源
最近更新 更多