作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Julia v0.6.4。考虑以下保存在 FooModule.jl
中的模块:
module FooModule
export Foo
export doSomething
mutable struct Foo
x::Int64
function Foo(xin::Int64)
new(xin)
end # Foo
end # struct
function doSomething(F::Foo)
println(F.x+123)
end # doSomething
end # module
还有一个main.jl
:
using FooModule
function main()
F = Foo(10)
doSomething(F)
end # main
现在我启动 Julia REPL:
julia> include("main.jl");
julia> main()
133
即我得到了我所期望的。现在假设 doSomething
包含很多行,我想拆分 FooModule.jl
。我想做这样的事情:
module FooModule
export Foo
export doSomething
include("doSomething.jl") # <- include instead of writing out
mutable struct Foo
x::Int64
function Foo(xin::Int64)
new(xin)
end # Foo
end # struct
end # module
和doSomething.jl
function doSomething(F::Foo)
println(F.x+123)
end # doSomething
这会产生错误,因为 doSomething.jl
对 Foo
一无所知。
julia> include("main.jl");
ERROR: LoadError: LoadError: LoadError: UndefVarError: Foo not defined
Stacktrace:
[1] include_from_node1(::String) at ./loading.jl:576
[2] include(::String) at ./sysimg.jl:14
[3] include_from_node1(::String) at ./loading.jl:576
[4] eval(::Module, ::Any) at ./boot.jl:235
[5] _require(::Symbol) at ./loading.jl:490
[6] require(::Symbol) at ./loading.jl:405
[7] include_from_node1(::String) at ./loading.jl:576
[8] include(::String) at ./sysimg.jl:14
while loading ~/Desktop/doSomething.jl, in expression starting on line 1
while loading ~/Desktop/FooModule.jl, in expression starting on line 6
while loading ~/Desktop/main.jl, in expression starting on line 1
我该如何解决这个问题?
最佳答案
只需将 include("doSomething.jl")
移动到函数最初所在的位置,即类型定义之后。您可以将 include
视为将代码复制粘贴到文件中。
关于module - Julia:将模块拆分为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51819338/
我是一名优秀的程序员,十分优秀!