为什么Elixir函数的类型规范末尾有()或括号?

时间:2019-12-09 12:04:17

标签: elixir

例如,flat_map的类型规范如下。

flat_map(Enumerable.t(), (element() -> Enumerable.t())) :: Enumerable.t()

输入和输出数据类型的末尾有许多括号。为什么在那儿?

在其他语言(例如TypeScript,Haskell或Rust)中,数据类型只是不带()的类型。

谢谢。

2 个答案:

答案 0 :(得分:7)

由于可以对某些类型进行参数化,因此可以这样指定整数列表:list(integer)

答案 1 :(得分:1)

万一有人需要它。 在规范中,我们可以选择使用(ar)和类型为零的函数来键入()或不键入

请记住,这仅适用于规格

  • 它更短并且更易读
  • 在某些罕见情况下可能会造成歧义

混合格式不会为规范添加()

透析器没有发出其他警告

在应用编译期间没有发出其他警告

有关更多信息,请查阅hexdocs-他们正在使用@spec中的两个选项 https://hexdocs.pm/elixir/typespecs.html