2

我想检查一个输入参数是否为函数对象。erlang 模块的is_functionandfun_info不行,因为它们不知道该功能是否真的由模块导出。

4

3 回答 3

5

我不确定我是否正确理解了您的问题,但如果您想了解是否从给定模块导出函数,您可以使用erlang:function_exported/3函数:

如果模块 Module 已加载并包含导出的函数 Function/Arity,则返回 true;否则为假。

于 2012-04-23T10:21:29.157 回答
1

要知道一个函数sort/2是否由模块导出lists是否已加载(请参阅Amiramix 注释),您可以使用:

lists:member({sort, 2}, lists:module_info(exports)).

如果您不介意 Arity 功能,可以使用:

case lists:keyfind(sort, 1, lists:module_info(exports)) of
    {sort, _} -> true;
    false -> false
end.
于 2017-08-24T02:23:36.177 回答
0

模块:module_info(出口)

模块信息

于 2012-04-23T10:23:34.093 回答