在函数 def 中,多个子句以公共匹配开头

Che*_* Yu 0 elixir

以下代码来自nx项目、nx/nx/type.ex文件。

为什么第一行存在,它没有函数体并且条件总是匹配?我找不到相关的 Elixir 参考文档。

def infinity_binary(type)
  def infinity_binary({:bf, 16}), do: <<0x7F80::16-native>>
  def infinity_binary({:f, 16}), do: <<0x7C00::16-native>>
  def infinity_binary({:f, 32}), do: <<0x7F800000::32-native>>
  def infinity_binary({:f, 64}), do: <<0x7FF0000000000000::64-native>>
Run Code Online (Sandbox Code Playgroud)

sab*_*ara 5

这样做是为了文档目的,以便有更好的参数名称。

正如您在hexdocs上看到的, ex_doc 能够使用此名称,而不是依赖于默认的次优命名,例如tuple.

可以在此处找到参考。

  • 值得补充的是,函数头最常用于允许多子句函数的参数使用默认值。 (3认同)