Elixir语言中 Enum.min_max_by
相关用法介绍如下。
用法:
min_max_by(enumerable, fun, sorter_or_empty_fallback \\ &</2, empty_fallback \\ fn -> raise Enum.EmptyError end)
@spec min_max_by(
t(),
(element() -> any()),
(element(), element() -> boolean()) | module(),
(() -> empty_result)
) :: {element(), element()} | empty_result
when empty_result: any()
返回一个元组,其中包含由给定函数计算的可枚举中的最小和最大元素。
如果多个元素被认为是最大或最小的,则返回找到的第一个。
例子
iex> Enum.min_max_by(["aaa", "bb", "c"], fn x -> String.length(x) end)
{"c", "aaa"}
iex> Enum.min_max_by(["aaa", "a", "bb", "c", "ccc"], &String.length/1)
{"a", "aaa"}
iex> Enum.min_max_by([], &String.length/1, fn -> {nil, nil} end)
{nil, nil}
这个函数使用 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_max_by(users, &(&1.birthday), Date)
{
%{name: "Lovelace", birthday: ~D[1815-12-10]},
%{name: "Ellis", birthday: ~D[1943-05-11]}
}
最后,如果您不想引发空枚举,则可以传递空回退:
iex> Enum.min_max_by([], &String.length/1, fn -> nil end)
nil
相关用法
- Elixir Enum.min_max用法及代码示例
- Elixir Enum.min_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_max_by(enumerable, fun, sorter_or_empty_fallback \\ &</2, empty_fallback \\ fn -> raise Enum.EmptyError end)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。