Grundsätzlich ich ein Modul möchten, die Funktionen, die außerhalb ihres Anwendungsbereichs nutzen können. Ich brauche das, weil meine Arbeit nur einen Rahmen bieten, wo der Benutzer seinen eigenen Code zu setzen in der Lage sein. So etwas wie diesWie können Sie verwenden Funktionen von außerhalb eines Moduls innerhalb eines Moduls
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
und schließlich Main.j l
# push!(LOAD_PATH, pwd()) # for local usage
using MyModule
include("SomeImplementation.jl")
startSimulation(ConcreteType(5))
Wo Simulation.jl und MyModule.jl geschrieben werden von mir und SomeImplementation.jl und Main.jl werden vom Anwender geschrieben.
Jetzt funktioniert das obige Beispiel nicht, da Module ihren eigenen Namespace haben und selbst wenn SomeImplementation.jl in Zeile 3 importiert wird, wird der Interpreter sie nicht in Zeile 4 von Simulation.jl sehen.
Ich kann nichts in MyModule.jl importieren, weil ich nicht wissen kann, wie der Benutzer seine Sachen nennen wird oder was er zusätzliche Libs vielleicht sogar müssen.
Gibt es sind Möglichkeit, dies mit Modulen zu tun? Ansonsten werde ich einfach keine Module verwenden.
vielen Dank! Menge! Vor allem die Stubs helfen sehr, den Benutzer darüber zu informieren, wie er mit meiner Schnittstelle arbeiten soll. Ich habe meine StartSimulation-Funktion nicht verschoben. Gibt es einen Grund, warum Sie es in die Moduldatei geschrieben haben? – Nozdrum
Es spielt keine Rolle, wie Sie Ihr Modul in separate Dateien organisieren. Dieser Code muss nur innerhalb des 'module' Block leben, entweder direkt oder durch' include'. –