2012-04-23 3 views

ответ

4

Я не уверен, если я правильно понял ваш вопрос, но если вы пытаетесь понять, будет ли экспортироваться функция или не из данного модуля, вы можете использовать функцию erlang:function_exported/3:

возвращения true, если модуль Module загружен и содержит экспортированную функцию Function/Arity; в противном случае - false.

+0

спасибо. Вы гораздо более знакомы с библиотекой Эрланг, чем я. –

+2

'erlang: function_exported/3' не лучший выбор, потому что он вернет' false', если модуль не загружен, даже если определенная функция экспортируется. 'module_info', как было предложено другим ответом, может быть лучше (модуль' code' содержит еще несколько других вариантов). – Amiramix

0

модуль: module_info (экспорт)

module_info

+0

Я знаю эту функцию, но я думаю, что существует, может быть, гораздо лучший выбор. Спасибо. –

0

Чтобы узнать, если функция sort/2 экспортируется модулем lists, загружен ли он или нет (см Amiramix comment), вы можете использовать :

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

Если вы не против функции Arity, вы можете использовать:

case lists:keyfind(sort, 1, lists:module_info(exports)) of 
    {sort, _} -> true; 
    false -> false 
end. 
Смежные вопросы