具有相同功能的功能的文档

时间:2015-10-09 20:36:43

标签: elixir

我有两个功能,具有相同的功能。目前,如果我调用h foo/1,我只会获得第一个函数的文档(或函数签名)。有没有办法指定我感兴趣的foo/1?有没有办法将@doc条评论添加到有助于此功能的函数中?下面真的很愚蠢的示例代码,减去任何@doc条评论。

def foo(bar) when is_binary(bar) do
  .
  .
  .
end

def foo(bar) when is_number(bar) do
  .
  .
  .
end

2 个答案:

答案 0 :(得分:3)

实际上你有一个带有多个子句的函数。函数由名称和arity标识,多个函数在模块中不能具有相同的名称+ arity。这就是为什么您的文档仅显示第一个函数子句的原因。

Elixir上有一个未解决的问题,例如:} https://github.com/elixir-lang/elixir/issues/3707。{/ p>

答案 1 :(得分:1)

您可以将文档定义为默认签名,如下所示:

@doc """
foo takes either a binary or an integer value and foo's it
"""
@spec foo(String.t | integer) :: result_type_here
def foo(val)

def foo(str) when is_binary(str), do: ...
def foo(num) when is_integer(num), do: ...

但是没有办法单独记录每个变体。