【发布时间】:2020-10-22 09:29:12
【问题描述】:
我一直对如何在 Julia 中定义和使用自定义 module 感到困惑。
例如,我定义了一个名为myMoldule 的module 来包装一个可变结构Param 和一个函数add 在D:\\run\\defineModule.jl 中:
module myMoldule
export Param, add
mutable struct Param
x ::Int64
y ::Int64
end
function add(x::Int64, y::Int64)
sum ::Int64
sum = x + y
return sum
end
end
并在D:\\run\\useModule.jl 中使用了这个模块,例如:
include("D:\\run\\defineModule.jl")
using .myMoldule
function testModule()
param = Param(1, 2)
sum = add(param.x, param.y)
println(sum)
end
运行testModule()时出错如下:
julia> testModule()
ERROR: UndefVarError: Param not defined
Stacktrace:
[1] testModule() at D:\run\useModule.jl:8
[2] top-level scope at none:1
请注意,我在include(...) 中使用了绝对路径以避免使用LOAD_PATH 内容,并在模块名称前添加了.(即using .myMoldule)。
似乎是什么问题?
P.S.:Julia 版本信息:
julia> versioninfo()
Julia Version 1.5.2
Commit 539f3ce943 (2020-09-23 23:17 UTC)
Platform Info:
OS: Windows (x86_64-w64-mingw32)
CPU: Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, skylake)
Environment:
JULIA_DEPOT_PATH = C:\Users\f\.julia;C:\opt\JuliaPro-1.5.2-1\Julia-1.5.2\local\share\julia;C:\opt\JuliaPro-1.5.2-1\Julia-1.5.2\share\julia
JULIA_LOAD_PATH = @;@v#.#;@stdlib
JULIA_NUM_THREADS = 6
JULIA_PKG_SERVER = pkg.juliahub.com
【问题讨论】: