【问题标题】:What does the slash notation in Elixir mean?Elixir 中的斜线符号是什么意思?
【发布时间】:2019-07-29 16:00:21
【问题描述】:

在 Elixir 文档中,他们一直使用带有斜线的奇怪符号,例如:

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

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

【问题讨论】:

    标签: elixir


    【解决方案1】:

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

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

    Erlang/Elixir Syntax: A Crash Course中也有描述:

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

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

    【讨论】:

      【解决方案2】:

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

      入门指南中也提到了该符号:12

      【讨论】:

        猜你喜欢
        • 2017-09-25
        • 1970-01-01
        • 2010-09-29
        • 2011-04-18
        • 1970-01-01
        • 2020-06-06
        • 2021-12-30
        相关资源
        最近更新 更多