Elixir語言中 Stream.transform
相關用法介紹如下。
用法:
transform(enum, acc, reducer)
@spec transform(Enumerable.t(), acc, fun) :: Enumerable.t()
when fun: (element(), acc -> {Enumerable.t(), acc} | {:halt, acc}), acc: any()
轉換現有流。
它需要一個累加器和一個接收每個流元素和一個累加器的函數。它必須返回一個元組,其中第一個元素是一個新流(通常是一個列表)或原子 :halt
,第二個元素是下一個元素(如果有的話)在兩種情況下使用的累加器。
注意:此函數等效於
,除了此函數在處理流後不返回累加器。Enum.flat_map_reduce/3
例子
很有用,因為它可以用作實現此模塊中定義的許多函數的基礎。例如,我們可以如下實現Stream.transform/3
Stream.take(enum, n)
:
iex> enum = 1001..9999
iex> n = 3
iex> stream = Stream.transform(enum, 0, fn i, acc ->
...> if acc < n, do: {[i], acc + 1}, else: {:halt, acc}
...> end)
iex> Enum.to_list(stream)
[1001, 1002, 1003]
相關用法
- Elixir Stream.take_every用法及代碼示例
- Elixir Stream.take用法及代碼示例
- Elixir Stream.take_while用法及代碼示例
- Elixir Stream.timer用法及代碼示例
- Elixir Stream.drop_while用法及代碼示例
- Elixir Stream.map_every用法及代碼示例
- Elixir Stream.iterate用法及代碼示例
- Elixir Stream.dedup_by用法及代碼示例
- Elixir Stream.interval用法及代碼示例
- Elixir Stream.zip用法及代碼示例
- Elixir Stream.chunk_every用法及代碼示例
- Elixir Stream.chunk_while用法及代碼示例
- Elixir Stream.reject用法及代碼示例
- Elixir Stream.uniq用法及代碼示例
- Elixir Stream.chunk_by用法及代碼示例
- Elixir Stream.dedup用法及代碼示例
- Elixir Stream.drop用法及代碼示例
- Elixir Stream.zip_with用法及代碼示例
- Elixir Stream.with_index用法及代碼示例
- Elixir Stream.flat_map用法及代碼示例
- Elixir Stream.repeatedly用法及代碼示例
- Elixir Stream.uniq_by用法及代碼示例
- Elixir Stream.concat用法及代碼示例
- Elixir Stream.intersperse用法及代碼示例
- Elixir Stream.filter用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Stream.transform(enum, acc, reducer)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。