“!”,“?”,“_”和“。”的含义是什么?长生不老药中的语法
What's the meaning of "!", "?", "_", and "." syntax in elixir
我需要帮助来理解 elixir !
、?
、_
和 .
中的以下语法。
这些语法在 elixir 的功能中起什么作用?例如 Repo.get!
.
我不确定它们只是函数名,还是有作用。虽然我知道 .
用于调用匿名函数。 _
用于任意或可变参数?
!
- 失败时引发异常的函数约定。
?
- return 布尔值
函数的约定
_
- 用于忽略参数或部分模式匹配表达式。
.
- 正如您提到的用于调用匿名函数,但也用于访问模块函数,例如 Mod.a(arg)
.
首先是 ! 和 ?
它们是通常应用于函数名称末尾的命名约定,不是任何特殊语法。
! - 如果函数遇到错误,将引发异常。
一个很好的例子是 Enum.fetch!(It also has a same Enum.fetch,它不会引发异常)。找到给定索引处的元素(从零开始)。
如果给定位置超出集合范围,则引发 OutOfBoundsError。
? - 用于显示函数将 return 一个布尔值,true 或 false。一个很好的例子是 Enum.any? 如果函数对任何值都为真,则 return 为真,否则 return 为假
_
- 这将忽略函数或模式匹配中的参数。喜欢的话可以在underscore.Ex之后起个名字 - _base
这个常用于尾递归函数的结尾。一个很好的例子是幂函数。如果你想将任何数字基数增加到 0 结果它是 1,所以基数是什么并不重要
defp getPower(_base,0), do: 1
.
- 用于访问模块内的任何函数或按照您的建议调用匿名函数
iex(1)> square = fn(number) -> number * number end
iex(2)> square.(4)
我需要帮助来理解 elixir !
、?
、_
和 .
中的以下语法。
这些语法在 elixir 的功能中起什么作用?例如 Repo.get!
.
我不确定它们只是函数名,还是有作用。虽然我知道 .
用于调用匿名函数。 _
用于任意或可变参数?
!
- 失败时引发异常的函数约定。
?
- return 布尔值
_
- 用于忽略参数或部分模式匹配表达式。
.
- 正如您提到的用于调用匿名函数,但也用于访问模块函数,例如 Mod.a(arg)
.
首先是 ! 和 ?
它们是通常应用于函数名称末尾的命名约定,不是任何特殊语法。
! - 如果函数遇到错误,将引发异常。
一个很好的例子是 Enum.fetch!(It also has a same Enum.fetch,它不会引发异常)。找到给定索引处的元素(从零开始)。 如果给定位置超出集合范围,则引发 OutOfBoundsError。
? - 用于显示函数将 return 一个布尔值,true 或 false。一个很好的例子是 Enum.any? 如果函数对任何值都为真,则 return 为真,否则 return 为假
_
- 这将忽略函数或模式匹配中的参数。喜欢的话可以在underscore.Ex之后起个名字 - _base
这个常用于尾递归函数的结尾。一个很好的例子是幂函数。如果你想将任何数字基数增加到 0 结果它是 1,所以基数是什么并不重要
defp getPower(_base,0), do: 1
.
- 用于访问模块内的任何函数或按照您的建议调用匿名函数
iex(1)> square = fn(number) -> number * number end
iex(2)> square.(4)