Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何将效果附加到资源[F,A]中的F而不使用A?_Scala_Scala Cats_Cats Effect - Fatal编程技术网

Scala 如何将效果附加到资源[F,A]中的F而不使用A?

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],在不使用i.e.use的情况下,将度量、记录错误等效果附加到F的最惯用方法是什么


我可以很容易地用一个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"