[英]How to extract value from Scala cats IO
I need to get Array[Byte] value from ioArray which is IO[Array[Byte]] // IO is from cats library我需要从 ioArray 中获取 Array[Byte] 值,即 IO[Array[Byte]] // IO 来自 cats 库
object MyTransactionInputApp extends App{
val ioArray : IO[Array[Byte]] = generateKryoBinary()
val i : Array[Byte] = ioArray.unsafeRunSync();
println(i)
def generateKryoBinaryIO(transaction: Transaction): IO[Array[Byte]] = {
KryoSerializer
.forAsync[IO](kryoRegistrar)
.use { implicit kryo =>
transaction.toBinary.liftTo[IO]
}
}
def generateKryoBinary(): IO[Array[Byte]] = {
val transaction = new Transaction(Hash(""),"","","","","")
val ioArray = generateKryoBinaryIO(transaction);
return ioArray
}
}
I tried the below, but not working我试过下面的,但没有工作
val i : Array[Byte] = for {
array <- ioArray
} yield array
If you just started working with cats-effect I recommend reading about cats.effect.IOApp
which runs your IO .如果您刚开始使用 cats-effect,我建议您阅读运行cats.effect.IOApp
的 cats.effect.IOApp 。
Otherwise simple solutions would be:否则简单的解决方案是:
import cats.effect.unsafe.implicits.global
ioArray.unsafeRunSync()
Future
:或者与Future
一起工作:import cats.effect.unsafe.implicits.global
ioArray.unsafeToFuture()
Could you give us more context about your application?你能给我们更多关于你的申请的背景吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.