gpt4 book ai didi

erlang - 如何在Erlang中动态调用模块?

转载 作者:行者123 更新时间:2023-12-02 08:14:31 24 4
gpt4 key购买 nike

假设我有两个模块a.erlb.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 的调用两边加上括号。

模块 abget_handler/1 的简单版本可能是:

get_handler("a") -> a;
get_handler("b") -> b.

关于erlang - 如何在Erlang中动态调用模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34579048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com