如何在Elixir中调用一个Erlang函数

14

在Elixir中调用Erlang函数的格式是什么?

具体来说,我应该如何在iex中调用函数,并且在哪里可以找到Erlang可用的模块和函数列表。

3个回答

18

首先在Erlang OTP参考页面索引中找到要调用的模块和函数。

例如,要调用random uniform,您需要查找random模块并找到uniform\0函数。

在Elixir中调用它的格式为:module.function(),例如,

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

对于不带任何参数的函数,括号是可选的。


1
重点是您通常调用函数,唯一的区别是Elixir模块具有CamelCaseNames,而Erlang模块具有:snake_case_names_with_a_colon - Paweł Obrok
4
不要忘记重要的一点 @Gerry,Elixir 字符串用 "string" 表示时,在传递给 Erlang 时需要转换为字符列表,如 'string'。我会把这个加到你的回答里。 - Onorio Catenacci
@gerry,OTP参考页面索引的更新URL为:https://www.erlang.org/doc/man_index.html。我试图更新您的答案,但是出现了“编辑队列中编辑次数过多”的错误。 - JTigger

4
自动完成在iex中将对此有很大帮助。
iex> :c<TAB> 

这将向您展示以字母c开头的所有已加载模块,来自Erlang。

iex> :crypto.<TAB>

该模块将向您展示所有可用的功能。不幸的是,截至Elixir 1.2版本,h命令尚未适用于Erlang模块。但它确实有一个有用的副作用。

并非所有可用的Erlang模块最初都被加载(标准Erlang发行版中有500多个)。获取模块加载的一种方法是使用h命令。

iex> h :crypto

或者你可以使用l命令,但那没那么有趣。

1

erldocs.com 允许您交互式搜索Erlang文档。

如果您已经安装了manpages,它们也很方便(只需在shell中输入man <module-name>)。对于这一点,我推荐使用kerl,它可以通过正确的配置自动安装Erlang manpages。

对于我的项目,我要不要脸地打个广告: 在IEx中使用h来查找Erlang函数/模块是无效的,但希望通过docsh实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接