繁体   English   中英

如何从 Scala 猫 IO 中提取值

[英]How to extract value from Scala cats IO

我需要从 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
  }

}

我试过下面的,但没有工作

 val i : Array[Byte] = for {
    array <- ioArray
  } yield array

如果您刚开始使用 cats-effect,我建议您阅读运行cats.effect.IOApp的 cats.effect.IOApp

否则简单的解决方案是:

  1. 显式运行它并得到结果:
import cats.effect.unsafe.implicits.global

ioArray.unsafeRunSync()
  1. 或者与Future一起工作:
import cats.effect.unsafe.implicits.global

ioArray.unsafeToFuture()

你能给我们更多关于你的申请的背景吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM