作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有两个模块a.erl和b.erl。这两个模块都包含相同的功能(在 Java 中我会说“两个类都实现相同的接口(interface)”)。在模块“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 中,这非常明显,因为您只是返回类的新实例。
最佳答案
只需让 get_handler/1
以原子形式返回模块名称,然后用它来调用所需的函数:
(get_handler("a")):some_function2("aaaa"),
(get_handler("b")):some_function1("here we go for b").
请注意,在这种情况下,您需要在对 get_handler/1
的调用两边加上括号。
模块 a
和 b
的 get_handler/1
的简单版本可能是:
get_handler("a") -> a;
get_handler("b") -> b.
关于erlang - 如何在Erlang中动态调用模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34579048/
我是一名优秀的程序员,十分优秀!