Scala 如何将效果附加到资源[F,A]中的F而不使用A?
给定一个资源[F,a],在不使用i.e.use的情况下,将度量、记录错误等效果附加到F的最惯用方法是什么Scala 如何将效果附加到资源[F,A]中的F而不使用A?,scala,scala-cats,cats-effect,Scala,Scala Cats,Cats Effect,给定一个资源[F,a],在不使用i.e.use的情况下,将度量、记录错误等效果附加到F的最惯用方法是什么 我可以很容易地用一个F[a]来实现这一点,但我依赖于一个专门返回资源[F,a]的API来确保a被正确释放。如果我正确理解这个问题,我会使用Resource.liftF和Nice。实际上,我很接近,但由于Intellij无法编译这样的代码,我偏离了方向。。。谢谢资源类instanceApply[Resource[IO,?]]上不存在productL。productLsrcResource.Li
我可以很容易地用一个F[a]来实现这一点,但我依赖于一个专门返回资源[F,a]的API来确保a被正确释放。如果我正确理解这个问题,我会使用Resource.liftF和Nice。实际上,我很接近,但由于Intellij无法编译这样的代码,我偏离了方向。。。谢谢资源类instanceApply[Resource[IO,?]]上不存在productL。productLsrcResource.LiftLog
import cats.effect.{ IO, Resource }
import cats.syntax.apply._
import scala.io.Source
val src = Resource.fromAutoCloseable(IO(Source.fromFile("build.sbt")))
val log = IO(println("opening file"))
val loggedSrc = src <* Resource.liftF(log)
scala> val program = loggedSrc.use(s => IO(println(s.mkString)))
program: cats.effect.IO[Unit] = IO$201584418
scala> program.unsafeRunSync
opening file
scalaVersion := "2.12.8"
scalacOptions += "-Ypartial-unification"
libraryDependencies += "org.typelevel" %% "cats-effect" % "1.2.0"