私は2つのモジュールを持っているとします。a.erlとb.erlとします。両方のモジュールには同じ機能があります(Javaでは "両方のクラスが同じインターフェースを実装しています")。ここではモジュールで 「c.erl」私はモジュールを返す関数を持つようにしたい「」または「B」(パラメータに依存します)Erlangでモジュールを動的に呼び出す方法は?
は、私はモジュールc.erl
に持つようにしたいものです-module(c)
get_handler(Id) ->
% if Id == "a" return a
% if Id == "b" return b
test() ->
get_handler("a"):some_function1("here were go for a"),
get_handler("a"):some_function2("aaaa"),
get_handler("b"):some_function1("here we go for b")
どうすればこの作品を作成できますか?私はErlangには比較的新しいので、それをどうやって行うのか分からない。 Javaでは、クラスの新しいインスタンスを返すだけなので、非常に明白です。
書かれている方法でこの質問を理解できるかどうかはわかりません。 -import(Module、[Function1/Arity、...、FunctionN/Arity])。 'をインポートして、 'a:some_function/arity'または' b:some_function/arity'を呼び出すだけですか? –
私はモジュール "c"または "if"ステートメントで異なる呼び出しをしたくありません。私は関数を呼び出す同じコードを、get_handlerが返す関数に依存させたいと思っています。私の例では、get_handlerは "a"と "b"の間を選択しますが、そこから選択できるモジュールはもっと多いかもしれません。 – cactus