“!”,“?”,“_”和“。”的含义是什么? elixir

时间:2015-09-08 04:48:12

标签: elixir elixir-framework

我需要帮助理解elixir !?_.中的以下语法。 elixir函数中的语法角色是什么?例如Repo.get!

我不确定它们只是函数名称,还是有角色。虽然我知道.用于调用匿名函数。并_为任何或变量?

2 个答案:

答案 0 :(得分:22)

! - 提出失败例外情况的公约。

? - 返回布尔值的函数约定

_ - 用于忽略参数或模式匹配表达式的一部分。

. - 正如您所提到的那样,用于调用匿名函数,但也用于访问模块函数,例如Mod.a(arg)

答案 1 :(得分:13)

首先

它们是通常应用于函数名称末尾的命名约定,并且不是任何特殊语法。

- 如果函数遇到错误,将引发异常。

一个很好的例子是Enum.fetch!(它也有一个相同的Enum.fetch,它不会引发异常)。在给定的索引处给出元素(从零开始)。 如果给定位置超出集合的范围,则引发OutOfBoundsError。

- 用于显示函数将返回布尔值,为true或false。一个很好的例子是Enum.any?,如果函数对任何值都为真,则返回true,否则返回false

_ - 这将忽略函数或模式匹配中的参数。如果你愿意,你可以在underscore.Ex - _base

之后给出一个名字

这通常用于尾递归函数的末尾。一个很好的例子是电源功能。如果你想将任何数字基数提高到0,结果就是1,所以无论基数是什么

都无关紧要
defp getPower(_base,0), do: 1

. - 用于访问模块内的任何函数或建议您调用匿名函数

iex(1)> square = fn(number) -> number * number end
iex(2)> square.(4)