Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 具有相同算术性的函数的文档_Elixir - Fatal编程技术网

Elixir 具有相同算术性的函数的文档

Elixir 具有相同算术性的函数的文档,elixir,Elixir,我有两个函数,具有相同的算术数。目前,如果我调用hfoo/1我只会得到第一个函数的文档(或函数签名)。有没有办法指定我感兴趣的foo/1?有没有一种方法可以将@doc注释添加到函数中,从而对此有所帮助?下面的示例代码非常愚蠢,没有任何@doc注释 def foo(bar) when is_binary(bar) do . . . end def foo(bar) when is_number(bar) do . . . end 您可以在默认签名旁边定义文档,如下所示:

我有两个函数,具有相同的算术数。目前,如果我调用
hfoo/1
我只会得到第一个函数的文档(或函数签名)。有没有办法指定我感兴趣的
foo/1
?有没有一种方法可以将
@doc
注释添加到函数中,从而对此有所帮助?下面的示例代码非常愚蠢,没有任何
@doc
注释

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

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

您可以在默认签名旁边定义文档,如下所示:

@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: ...

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

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


在这种情况下,Elixir有一个公开的警告问题:。

实际上,我感觉用户问了一个不同的问题,因为他提到了具有相同算术性的不同函数,而不是具有不同arg类型的相同函数。这是他的代码示例中的一个输入错误,他提到“有没有办法指定哪个foo/1”,这意味着他试图记录相同函数名/算术的多个子句。这是正确的@bitwalker,我现在已经解决了这个问题。抱歉搞混了,这很有趣。那么,用一个
@doc
记录这一点并解释每一个条款的正确方法是什么呢?如果是这样,从
结尾
和下一个
定义
之间删除任何空行是否合适?是的,单个
@doc
,我通常在子句之间有一行。:)