【发布时间】:2016-01-04 01:56:00
【问题描述】:
假设我有两个模块 a.erl 和 b.erl。两个模块都包含相同的功能(在 Java 中我会说“两个类都实现了相同的接口”)。 在模块“c.erl”中,我想要一个返回模块“a”或“b”的函数(取决于参数)
这是我想在模块 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”之间进行选择,但它可以选择的模块可能更多。
标签: erlang