Elixir语言中 Enum.zip_reduce
相关用法介绍如下。
用法一
zip_reduce(enums, acc, reducer)
(自 1.12.0 起)
@spec zip_reduce(t(), acc, ([term()], acc -> acc)) :: acc when acc: term()
减少所有给定的 enumerables,只要任何 enumerable 为空就停止。
reducer 将接收 2 个参数:一个元素列表(每个枚举中的一个)和累加器。
在实践中,此函数提供的行为可以通过以下方式实现:
Enum.reduce(Stream.zip(enums), acc, reducer)
但
的存在是为了方便。zip_reduce/3
例子
iex> enums = [[1, 1], [2, 2], [3, 3]]
...> Enum.zip_reduce(enums, [], fn elements, acc ->
...> [List.to_tuple(elements) | acc]
...> end)
[{1, 2, 3}, {1, 2, 3}]
iex> enums = [[1, 2], %{a: 3, b: 4}, [5, 6]]
...> Enum.zip_reduce(enums, [], fn elements, acc ->
...> [List.to_tuple(elements) | acc]
...> end)
[{2, {:b, 4}, 6}, {1, {:a, 3}, 5}]
用法二
zip_reduce(left, right, acc, reducer)
(自 1.12.0 起)
@spec zip_reduce(
t(),
t(),
acc,
(enum1_elem :: term(), enum2_elem :: term(), acc -> acc)
) :: acc
when acc: term()
一旦任何一个可枚举为空,就减少两个以上的可枚举停止。
在实践中,此函数提供的行为可以通过以下方式实现:
Enum.reduce(Stream.zip(left, right), acc, reducer)
但
的存在是为了方便。zip_reduce/4
例子
iex> Enum.zip_reduce([1, 2], [3, 4], 0, fn x, y, acc -> x + y + acc end)
10
iex> Enum.zip_reduce([1, 2], [3, 4], [], fn x, y, acc -> [x + y | acc] end)
[6, 4]
相关用法
- Elixir Enum.zip_with用法及代码示例
- Elixir Enum.zip用法及代码示例
- Elixir Enum.unzip用法及代码示例
- Elixir Enum.min_max用法及代码示例
- Elixir Enum.reduce_while用法及代码示例
- Elixir Enum.at用法及代码示例
- Elixir Enum.split_with用法及代码示例
- Elixir Enum.dedup用法及代码示例
- Elixir Enum.sum用法及代码示例
- Elixir Enum.find_value用法及代码示例
- Elixir Enum.product用法及代码示例
- Elixir Enum.map_join用法及代码示例
- Elixir Enum.intersperse用法及代码示例
- Elixir Enum.flat_map用法及代码示例
- Elixir Enum.count用法及代码示例
- Elixir Enum.fetch用法及代码示例
- Elixir Enum.frequencies用法及代码示例
- Elixir Enum.drop用法及代码示例
- Elixir Enum.slice用法及代码示例
- Elixir Enum.max_by用法及代码示例
- Elixir Enum.random用法及代码示例
- Elixir Enum.empty?用法及代码示例
- Elixir Enum.take_while用法及代码示例
- Elixir Enum.find用法及代码示例
- Elixir Enum.chunk_every用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Enum.zip_reduce(enums, acc, reducer)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。