【问题标题】:How to call an Erlang function in Elixir如何在 Elixir 中调用 Erlang 函数
【发布时间】:2016-05-18 22:57:17
【问题描述】:

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

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

【问题讨论】:

    标签: elixir elixir-iex


    【解决方案1】:

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

    如果您安装了联机帮助页,它们也很方便(只需在您的 shell 中使用 man <module-name>)。为此,我推荐kerl,它可以使用正确的配置自动安装 Erlang 手册页。

    无耻地插入我的项目: h 在 IEx 中的 Erlang 函数/模块上不起作用,但希望它会感谢 docsh

    【讨论】:

      【解决方案2】:

      iex 中的自动完成功能对此有很大帮助。

      iex> :c<TAB> 
      

      将显示所有从 Erlang 加载的以字母开头的模块 c,和

      iex> :crypto.<TAB>
      

      将向您展示该模块中可用的所有功能。不幸的是,从 Elixir 1.2 开始, h 命令还不适用于 Erlang 模块。不过它确实有一个有用的副作用。

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

      iex> h :crypto
      

      或者您可以只使用l 命令,但这并不那么有趣。

      【讨论】:

        【解决方案3】:

        首先在Erlang OTP Reference Page Index中找到你要调用的模块和函数。

        例如,要调用随机制服,您可以查看 random 模块并找到 uniform\0 函数。

        要在 Elixir 中调用它,请使用 :module.function() 格式,例如,

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

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

        【讨论】:

        • 重点是你正常调用函数,唯一的区别是Elixir模块有CamelCaseNames而erlang模块有:snake_case_names_with_a_colon
        • 不要忘记重要的一点@Gerry,用“string”表示的 Elixir 字符串在像“string”一样传递给 Erlang 时需要更改为 char 列表,我会将其添加到您的答案中.
        猜你喜欢
        • 2013-09-16
        • 1970-01-01
        • 2016-10-20
        • 2010-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-21
        • 1970-01-01
        相关资源
        最近更新 更多