Elixir中的斜线符号是什么意思?

时间:2016-04-21 18:51:19

标签: elixir

在Elixir文档中,他们继续使用带斜杠的奇数表示法,例如:

is_boolean/1
IO.puts/1
String.length/1
is_function/2
++/2

我只是猜测,但我认为它指的是arity。但如果是这样的话,为什么魔鬼在文档的任何地方都没有提到?这不是IT中的任何标准惯例(至少,我在IT工作的20多年里从未见过的那种)。

2 个答案:

答案 0 :(得分:17)

来自使用入门文档的page 2, Basic types

  

注意:Elixir中的函数由名称和参数数量(即arity)标识。因此,is_boolean/1标识名为is_boolean的函数,该函数接受1个参数。 is_boolean/2标识具有相同名称但不同arity的不同(不存在)函数。

Erlang/Elixir Syntax: A Crash Course

中也对此进行了描述
  

这里我们创建一个名为hello_module的模块。在其中我们定义了三个函数,前两个函数可供其他模块通过顶部的export指令调用。它包含一系列函数,每个函数都以<function name>/<arity>格式编写。 Arity代表争论的数量。

我可能会推测,这往往会降级为Elixir文献中的旁注,因为它直接来自Erlang。虽然使用Elixir不需要Erlang知识,但是当人们记录Elixir派生的软件来自Erlang时,这种遗漏是一个常见的错误。

答案 1 :(得分:3)

你猜对了,这是函数的优点。它是一个重要信息(通常不包含在许多语言中)的原因是具有相同名称但不同arity的函数是不同的函数 - 例如Enum.reduce/2Enum.reduce/3。 Elixir中的函数由三个部分标识:模块,名称和 arity 。任何一个都是不同的,你有不同的功能。

“使用入门”指南中还提到了该表示法:12