簡體   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