gpt4 book ai didi

scala - ZIO 流 : Which is the difference between a ZSink and a ZTransducer?

转载 作者:行者123 更新时间:2023-12-04 14:54:34 26 4
gpt4 key购买 nike

我正在研究 ZIO Streams,使用库的 1.0.9 版 zio-streams .
我找不到任何可以说明 ZSink 之间差异的引用资料和一个 ZTransducer .
有什么不同?

最佳答案

A ZSink用于消费来自 ZStream 的元素.反过来,接收器将导致整个流的物化运行并产生一个值。
A ZTransducer是一个有状态的函数,它处理流中的数据块,与 ZSink 形成对比。它的处理永无止境。
如果我们看一个简单的例子:

import zio.stream.{ ZSink, ZStream }
import zio.stream.ZTransducer.{ splitLines, utf8Decode }

import java.nio.file.Paths

ZStream
.fromFile(Paths.get("/foo"), chunkSize = 1024 * 4)
.transduce(utf8Decode >>> splitLines)
.run(ZSink.foreach(zio.console.putStr))
我们可以看到新增的 ZStream编码基于块,并使用 transduceutf8Decode它将一大块字节解码为字符串,然后按行拆分它们。最后,我们使用 .run方法并提供 ZSink它向控制台发送数据,逐个元素。
更多关于 ZStream 的新设计 can be found here.

关于scala - ZIO 流 : Which is the difference between a ZSink and a ZTransducer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68336735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com