Elixir語言中 Enum.min_by
相關用法介紹如下。
用法:
min_by(enumerable, fun, sorter \\ &<=/2, empty_fallback \\ fn -> raise Enum.EmptyError end)
@spec min_by(
t(),
(element() -> any()),
(element(), element() -> boolean()) | module(),
(() -> empty_result)
) :: element() | empty_result
when empty_result: any()
返回由給定 fun
計算的 enumerable
中的最小元素。
默認情況下,比較是使用<=
排序器函數完成的。如果多個元素被認為是最小的,則返回找到的第一個元素。如果您希望返回被認為是最小的最後一個元素,則 sorter 函數不應為相等的元素返回 true。
如果enumerable
為空,則調用提供的empty_fallback
函數並返回其值。默認的 empty_fallback
引發
。Enum.EmptyError
例子
iex> Enum.min_by(["a", "aa", "aaa"], fn x -> String.length(x) end)
"a"
iex> Enum.min_by(["a", "aa", "aaa", "b", "bbb"], &String.length/1)
"a"
這個函數使用 Erlang 的術語排序這一事實意味著比較是結構化的而不是語義的。因此,如果要比較結構體,大多數結構體都提供了"compare"函數,例如
,它接收兩個結構體並返回Date.compare/2
:lt
(小於)、:eq
(等於)和:gt
(比...更棒)。如果你傳遞一個模塊作為排序函數,Elixir 會自動使用該模塊的compare/2
函數:
iex> users = [
...> %{name: "Ellis", birthday: ~D[1943-05-11]},
...> %{name: "Lovelace", birthday: ~D[1815-12-10]},
...> %{name: "Turing", birthday: ~D[1912-06-23]}
...> ]
iex> Enum.min_by(users, &(&1.birthday), Date)
%{name: "Lovelace", birthday: ~D[1815-12-10]}
最後,如果您不想引發空枚舉,則可以傳遞空回退:
iex> Enum.min_by([], &String.length/1, fn -> nil end)
nil
相關用法
- Elixir Enum.min_max用法及代碼示例
- Elixir Enum.min_max_by用法及代碼示例
- Elixir Enum.min用法及代碼示例
- Elixir Enum.map_join用法及代碼示例
- Elixir Enum.max_by用法及代碼示例
- Elixir Enum.max用法及代碼示例
- Elixir Enum.map_every用法及代碼示例
- Elixir Enum.map_reduce用法及代碼示例
- Elixir Enum.map用法及代碼示例
- Elixir Enum.member?用法及代碼示例
- Elixir Enum.map_intersperse用法及代碼示例
- Elixir Enum.unzip用法及代碼示例
- Elixir Enum.reduce_while用法及代碼示例
- Elixir Enum.at用法及代碼示例
- Elixir Enum.split_with用法及代碼示例
- Elixir Enum.dedup用法及代碼示例
- Elixir Enum.sum用法及代碼示例
- Elixir Enum.zip用法及代碼示例
- Elixir Enum.find_value用法及代碼示例
- Elixir Enum.product用法及代碼示例
- Elixir Enum.zip_with用法及代碼示例
- Elixir Enum.intersperse用法及代碼示例
- Elixir Enum.flat_map用法及代碼示例
- Elixir Enum.count用法及代碼示例
- Elixir Enum.fetch用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Enum.min_by(enumerable, fun, sorter \\ &<=/2, empty_fallback \\ fn -> raise Enum.EmptyError end)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。