기본적으로 범위 밖에있는 함수를 사용할 수있는 모듈이 필요합니다. 내 작품이 사용자 만에 자신의 코드를 삽입 할 수있는 프레임 워크를 제공하기 때문에 나는이 필요합니다.이모듈 내부의 모듈 외부에서 함수를 어떻게 사용할 수 있습니까?
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 L
Simulation.jl 및 MyModule.jl이 나와 SomeImplementation.jl 및 Main.jl에 의해 작성된# push!(LOAD_PATH, pwd()) # for local usage
using MyModule
include("SomeImplementation.jl")
startSimulation(ConcreteType(5))
은 사용자가 기록됩니다.
모듈에 자체 네임 스페이스가 있고 SomeImplementation.jl을 main 3 행으로 가져 오더라도 인터프리터는 Simulation.jl의 4 행에서 해당 이름 공간을 보지 못하기 때문에 위의 예제가 작동하지 않습니다.
MyModule.jl에서 아무 것도 가져올 수 없습니다. 사용자가 자신의 물건에 이름을 지정하는 방법이나 추가로 필요할 수도있는 libs를 알 수 없기 때문입니다.
모듈로이를 수행 할 방법이 있습니까? 그렇지 않으면 모듈을 사용하지 않을 것입니다.
감사를 :
그런 다음 구체적인 구현 그냥 특별히 가져 오기하거나 자격으로 인 MyModule에서 함수에 자신의
doStuff
방법을 추가 할 필요가 제비! 특히 스텁은 내 인터페이스에 대해 코드 작성하는 방법을 사용자에게 알리는 데 많은 도움이됩니다. 나는 startSimulation 함수를 움직이지 않았다. 모듈 파일에 넣은 이유는 무엇입니까? – Nozdrum모듈을 어떻게 분리 된 파일로 구성하는지는 중요하지 않습니다. 이 코드는 직접적으로 또는'include'를 통해'module' 블록 내에 존재해야합니다. –