5
基本上我想要一个可以使用超出范围的功能的模块。 我需要这个,因为我的工作将只提供一个框架,用户将能够把自己的代码他,像这样这样如何使用模块内部模块外部的功能
Simulation.jl
abstract AbstractType
function startSimulation(unknown::AbstractType)
doStuff(unknown)
end
MyModule.jl
module MyModule
include("Simulation.jl")
export AbstractType, startSimulation
end
SomeImplementation.jl
type ConcreteType <: AbstractType
variable::Int64
end
doStuff(me::ConcreteType)
me.variable
end
终于Main.j升
# push!(LOAD_PATH, pwd()) # for local usage
using MyModule
include("SomeImplementation.jl")
startSimulation(ConcreteType(5))
凡Simulation.jl和MyModule.jl都是由我和SomeImplementation.jl和Main.jl写入由用户编写。
现在上面的例子不起作用,因为模块有它们自己的命名空间,甚至SomeImplementation.jl在第3行的main中被导入,解释器将不会在Simulation.jl的第4行看到它。
我无法在MyModule.jl中导入任何东西,因为我无法知道用户如何命名他的东西或他甚至可能需要什么额外的库。
有没有办法做到这一点与模块?否则,我只是不使用模块。
谢谢很多!尤其是存根将帮助很多人通知用户如何对我的界面进行编码。我没有移动我的startSimulation函数tho。你为什么把它放到模块文件中的任何原因? – Nozdrum
如何将模块组织为单独的文件并不重要。这段代码只需要直接或者通过'include'就可以在'module'块中生存。 –