基本的には、そのスコープ外の関数を使用できるモジュールが必要です。 私の仕事が唯一のユーザが独自のコードを置くことができるようになりますフレームワークを提供しますので、私はこれを必要とする。このような何かモジュール内のモジュール外部からの関数を使用するにはどうすればいいですか?
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リットル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行目にインポートされても、Simulator.jlの4行目にインタープリタが表示されないため、上の例は機能しません。
私はMyModule.jlに何もインポートできません。ユーザが自分のものに名前を付ける方法や、必要な場合がある余分なライブラリがわからないからです。
モジュールでこれを行う方法はありますか?それ以外の場合は、モジュールを使用しません。
ありがとう:
はその後、具体的な実装がただ、具体的にそれをインポートまたはそれを修飾することにより、MyModuleという中で関数に自分の
doStuff
メソッドを追加する必要がありますロット!特に、スタブは、自分のインターフェースに対してコードを書く方法としてユーザーに知らせるのに役立ちます。私は自分のstartSimulation関数を動かさなかった。なぜそれをモジュールファイルに入れたのか? – Nozdrumモジュールをどのようにして別々のファイルに編成するかは実際問題ではありません。このコードは 'module'ブロックの中に直接または' include'を通して生きる必要があります。 –