當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir Enum.min用法及代碼示例


Elixir語言中 Enum.min 相關用法介紹如下。

用法:

min(enumerable, sorter \\ &<=/2, empty_fallback \\ fn -> raise Enum.EmptyError end)
@spec min(t(), (element(), element() -> boolean()) | module(), (() -> empty_result)) ::
  element() | empty_result
when empty_result: any()

根據 Erlang 的術語排序返回 enumerable 中的最小元素。

默認情況下,比較是使用<= 排序器函數完成的。如果多個元素被認為是最小的,則返回找到的第一個元素。如果您希望返回被認為是最小的最後一個元素,則 sorter 函數不應為相等的元素返回 true。

如果可枚舉為空,則調用提供的empty_fallback。默認的 empty_fallback 引發 Enum.EmptyError

例子

iex> Enum.min([1, 2, 3])
1

這個函數使用 Erlang 的術語排序這一事實意味著比較是結構化的而不是語義的。例如:

iex> Enum.min([~D[2017-03-31], ~D[2017-04-01]])
~D[2017-04-01]

在上麵的示例中, min/2 返回 4 月 1 日而不是 3 月 31 日,因為結構比較比較的是前一天。出於這個原因,大多數結構都提供了一個"compare"函數,例如 Date.compare/2 ,它接收兩個結構並返回:lt(小於)、:eq(等於)和:gt(大於)。如果你傳遞一個模塊作為排序函數,Elixir 會自動使用該模塊的compare/2 函數:

iex> Enum.min([~D[2017-03-31], ~D[2017-04-01]], Date)
~D[2017-03-31]

最後,如果您不想引發空枚舉,則可以傳遞空回退:

iex> Enum.min([], fn -> 0 end)
0

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Enum.min(enumerable, sorter \\ &<=/2, empty_fallback \\ fn -> raise Enum.EmptyError end)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。