【问题标题】:How to get help for Erlang functions from the Elixir shell如何从 Elixir shell 获取 Erlang 函数的帮助
【发布时间】:2015-04-21 22:59:21
【问题描述】:

在 iex 中,我无法获得内置 Erlang 函数的帮助,例如:

iex(1)> h :lists.reverse
:lists was not compiled with docs

有没有办法解决这个问题?

【问题讨论】:

  • 我不这么认为,因为 Erlang 文档与 Elixir 文档完全不同。也许你最好浏览一下online
  • 好吧,如果 Elixir shell 也知道如何向我展示 Erlang 文档,那就太好了!
  • 这意味着实现整个文档解析和处理功能,因此可能不值得。
  • 我猜这不是一个真正的答案,但请尝试 h(Enum.reverse)。关于“如果 Elixir shell 也知道如何……那就太好了”——他们确实接受你知道的拉取请求。我猜他们认为现在还有其他更高的优先级,但我敢肯定,如果有人想出如何使这项工作发挥作用,他们不会介意。

标签: erlang elixir


【解决方案1】:

我编写了一个模块,试图从在 unix 系统上随 erlang 一起安装的 unix 手册页中提供尽可能多的 erlang 文档。

https://github.com/philosophers-stone/ehelper

使用示例:

iex(3)> e :lists.reverse

                             :lists.reverse(list1)

### reverse(List1) -> List2

Types:

List1 = List2 = [T]

T = term()

Returns a list with the elements in List1 in reverse order.


                          :lists.reverse(list1, tail)

### reverse(List1, Tail) -> List2

Types:

List1 = [T]

Tail = term()

List2 = [T]

T = term()

Returns a list with the elements in List1 in reverse order, with tail Tail
appended.

Example:

    > lists:reverse([1, 2, 3, 4], [a, b, c]).
    [4,3,2,1,a,b,c]

【讨论】:

    【解决方案2】:

    没有。没有。

    Erlang 文档不同于 Elixir 文档。正如@whatyouhide 所说,这意味着编写一个Erlang 文档解析器并将其连接到控制台中的h/1。虽然并非不可能,但这需要一些工作。据我所知,没有人在做这件事。

    正如@Onorio Catenacci 所说,他们确实接受公关,所以你(或其他人)可以改变这一点:)。

    【讨论】:

    【解决方案3】:

    正如其他人所指出的,在 Elixir 中没有简单的方法可以做到这一点。但是,这里有一些捷径,它们可能对从 iex 检查 Erlang 模块中可用的功能很有用(尽管这些都不能真正访问任何文档)。

    给定的 Erlang 模块提供了哪些功能?

    要列出 Erlang 模块导出的所有函数,请使用 module_info 函数,例如:

    Enum.each :lists.module_info(:exports), &IO.inspect/1
    

    这将打印函数名称及其数量的列表。

    Erlang 函数接受哪些参数?

    要大致了解一下,您可以使用 s 命令从 iex 打印 Erlang 函数的规范信息:

    iex(1)> s :lists.reverse
    @spec reverse(list1, tail) :: list2 when List1: [t], Tail: term(), List2: [t], T: term(), list1: var, tail: var, list2: var
    @spec reverse(list1) :: list2 when List1: [t], List2: [t], T: term(), list1: var, list2: var
    

    当然,查找在线文档可能是最好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-09
      • 2016-05-18
      • 1970-01-01
      • 2015-11-30
      • 2012-03-22
      • 2018-09-14
      • 2019-12-27
      • 1970-01-01
      相关资源
      最近更新 更多