为什么 elixir 函数的类型规范末尾有 () 或括号?
Why is there () or parenthesis at the end of the type specs of elixir functions?
例如,flat_map 的类型说明如下。
flat_map(Enumerable.t(), (element() -> Enumerable.t())) :: Enumerable.t()
输入输出数据类型末尾有很多括号。为什么会有?
在 TypeScript、Haskell 或 Rust 等其他语言中,数据类型只是没有 () 的类型。
提前致谢。
因为某些类型可以参数化,所以您可以指定一个整数列表:list(integer)
。
以防有人需要。
在 specs
中,我们可以选择两种方式来键入 () 或不键入具有零元数和类型的函数
请记住,这仅适用于 specs
- 它更短,更易读
- 在极少数情况下可能会出现歧义
混合格式不添加 () 规格
透析器未发出额外警告
应用编译期间未发出额外警告
有关更多信息,请查看 hexdocs - 他们在 @spec 中使用了这两个选项
https://hexdocs.pm/elixir/typespecs.html
例如,flat_map 的类型说明如下。
flat_map(Enumerable.t(), (element() -> Enumerable.t())) :: Enumerable.t()
输入输出数据类型末尾有很多括号。为什么会有?
在 TypeScript、Haskell 或 Rust 等其他语言中,数据类型只是没有 () 的类型。
提前致谢。
因为某些类型可以参数化,所以您可以指定一个整数列表:list(integer)
。
以防有人需要。 在 specs
中,我们可以选择两种方式来键入 () 或不键入具有零元数和类型的函数请记住,这仅适用于 specs
- 它更短,更易读
- 在极少数情况下可能会出现歧义
混合格式不添加 () 规格
透析器未发出额外警告
应用编译期间未发出额外警告
有关更多信息,请查看 hexdocs - 他们在 @spec 中使用了这两个选项 https://hexdocs.pm/elixir/typespecs.html