Si supponga di avere due moduli a.erl e b.erl. Entrambi i moduli contengono le stesse funzioni (in Java direi "entrambe le classi implementano la stessa interfaccia"). Nel modulo "c.erl" Voglio avere una funzione che restituirà modulo "a" o "b" (dipende dal parametro)Come chiamare dinamicamente un modulo in Erlang?
Ecco quello che voglio avere nel modulo 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")
Come posso fare questo lavoro? Sono relativamente nuovo a Erlang e non so come farlo. In Java sarebbe molto ovvio, perché si restituisce solo una nuova istanza della classe.
Non sono sicuro di aver capito questa domanda dal modo in cui è scritta. Non importeresti semplicemente come: -import (Module, [Function1/Arity, ..., FunctionN/Arity]). 'E poi chiamerai' a: some_function/arity' o 'b: some_function/arity'? –
Non voglio avere chiamate diverse nelle istruzioni modulo "c" o "if". Voglio che lo stesso codice che chiamerà funzioni dipenda da cosa restituisce get_handler.Nel mio esempio get_handler sceglie tra "a" e "b", ma potrebbero esserci molti più moduli tra cui scegliere. – cactus