我有两个功能,具有相同的功能。目前,如果我调用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
答案 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: ...
但是没有办法单独记录每个变体。