Как вызвать функцию Erlang в Elixir

В каком формате вызывается функция Erlang в Elixir?

В частности, как я могу вызвать функцию в iex и где найти список модулей и функций, доступных в Erlang.


person Gerry Shaw    schedule 09.02.2016    source источник


Ответы (3)


Сначала найдите модуль и функцию, которые вы хотите вызвать, в указателе справочной страницы Erlang OTP.

Например, чтобы вызвать random uniform, вы должны заглянуть в модуль random и найти функцию uniform \ 0.

Чтобы вызвать это в Эликсире, вы используете формат :module.function(), например,

iex(1)> :random.uniform()
0.7230402056221108

Для функций, которые не принимают никаких параметров, скобки необязательны.

person Gerry Shaw    schedule 09.02.2016
comment
Дело в том, что вы вызываете функции как обычно, с той лишь разницей, что модули Elixir имеют CamelCaseNames, а модули erlang имеют :snake_case_names_with_a_colon - person Paweł Obrok; 09.02.2016
comment
Не забывайте важный момент @Gerry, что строки Elixir, которые обозначены строкой, должны быть изменены на списки символов при передаче в Erlang, например, 'string', я бы добавил это к вашему ответу. - person Onorio Catenacci; 09.02.2016

Автозаполнение в iex очень поможет в этом.

iex> :c<TAB> 

покажет вам все загруженные модули из Erlang, которые начинаются с буквы c, и

iex> :crypto.<TAB>

покажет вам все функции, доступные в этом модуле. К сожалению, начиная с версии Elixir 1.2 команда h еще не работает для модулей Erlang. Однако у него есть полезный побочный эффект.

Не все доступные модули Erlang загружаются изначально (в стандартном дистрибутиве Erlang их более 500). Один из способов загрузить модуль - использовать команду h.

iex> h :crypto

Или вы можете просто использовать команду l, но это не так весело.

person Fred the Magic Wonder Dog    schedule 10.02.2016

erldocs.com позволяет выполнять интерактивный поиск в документации Erlang.

Также удобны страницы управления (только man <module-name> в вашей оболочке), если они у вас установлены. Для этого я рекомендую kerl, который может автоматически устанавливать справочные страницы Erlang с правильной конфигурацией.

Бесстыдный плагин к моему проекту: h на функциях / модулях Erlang в IEx не работает, но надеюсь, что это будет, благодаря docsh.

person erszcz    schedule 11.02.2016