erlang shell帮助实现模块的功能

时间:2014-09-15 14:45:30

标签: erlang erlang-shell

我在shell中工作,我想查看函数io:format/1的帮助。

我的思路如下:

  1. 执行help() - 我找到命令m().
  2. 执行m(io) - 我在io模块
  3. 中看到了一系列功能

    问题:如何深入查找erlang Shell中函数io:format/1的帮助?


    help().的输出:

    1> help().
    ...
    m(Mod)     -- information about module <Mod>
    memory()   -- memory allocation information
    ...
    true
    

    m(io).的输出:

    2> m(io).
    Module io compiled: Date: July 10 2013, Time: 10.46
    Compiler options:  [{outdir,"/build/buildd/erlang-16.b.1-dfsg/lib/stdlib/src/../ebin"},
                        {i,"/build/buildd/erlang-16.b.1-dfsg/lib/stdlib/src/../include"},
                        {i,"/build/buildd/erlang-16.b.1-dfsg/lib/stdlib/src/../../kernel/include"},
                        warnings_as_errors,debug_info]
    Object file: /usr/lib/erlang/lib/stdlib-1.19.2/ebin/io.beam
    Exports: 
    columns/1                     parse_erl_form/2
    columns/0                     parse_erl_form/3
    format/1                      parse_erl_form/4
    format/2                      printable_range/0
    format/3                      put_chars/2
    ...
    parse_erl_exprs/4             setopts/2
    parse_erl_exprs/3             setopts/1
    parse_erl_form/1              write/1
                                  write/2
    ok
    

2 个答案:

答案 0 :(得分:4)

与Python,Lisp等不同,Erlang程序和shell会话无法访问标准库中函数的帮助文本。

我找到文档的方式是网址http://www.erlang.org/doc/man/%s.html的特殊Firefox书签。我将 e 指定为该书签的热键,以便我可以在Firefox地址栏中键入e io并重定向到http://www.erlang.org/doc/man/io.html,其中包含有关函数的文档io模块。

或者,您可能会发现http://erldocs.com/有用。它允许您键入您要查找的功能的名称,并直接跳转到其文档。

答案 1 :(得分:0)

从2020年开始,在OTP 23.0上,现在可以使用h函数:

摘录release doc

外壳中的新功能,用于显示Erlang模块,功能和类型的文档。的 功能是:

h/1,2,3 -- Print the documentation for a Module:Function/Arity.
ht/1,2,3 -- Print the type documentation for a Module:Type/Arity.
The embedded documentation is created as docchunks (EEP 48) when building the Erlang/OTP documentation.

示例:

2> h(lists, reverse).

  -spec reverse(List1) -> List2
                   when List1 :: [T], List2 :: [T], T :: term().

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

  -spec reverse(List1, Tail) -> List2
                   when
                       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]
ok