有没有办法在Erlang中打开一个模块,然后在不使用模块名前缀的情况下调用它的函数? 就像打开ML结构一样!
答案 0 :(得分:5)
您可以使用
-import(my_module, [foo/1,bar/2]).
从其他模块(foo/1
)导入单个函数(在我的示例中为bar/2
和my_module
),请参阅modules documentation。无法从模块导入所有函数,必须明确列出它们。
另请参阅In Erlang how can I import all functions from a module?,了解不应导入函数的原因!
答案 1 :(得分:5)
-import(...)
声明是用词不当,并不符合您的预期。
鉴于Erlang对代码的动态处理,它实际上也毫无意义。无法保证在运行时您拥有与编译时相同的“其他”模块,或者它是否存在。所有代码处理,编译/加载/清除/重新加载/等。 ,是基于模块完成的,没有模块间的依赖关系或优化。
答案 2 :(得分:1)
您可以使用定义:
代替导入-define(SIN(X), math:sin(X)).
my_func(X) -> ?SIN(X).