Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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 当值已经是未来时,使用EitherT.liftF提升未来_Scala_Scala Cats - Fatal编程技术网

Scala 当值已经是未来时,使用EitherT.liftF提升未来

Scala 当值已经是未来时,使用EitherT.liftF提升未来,scala,scala-cats,Scala,Scala Cats,我有这样一个价值观: val ss:Option[未来[列表[错误,文件]]] 我想做的是把它提升到一个EitherT.liftF[Future,Error,List[Error,File]]],所以我做的是: ss匹配{ case Some(value)=>EitherT.liftF[Future,Error,List[Error,File]](value) case None=>EitherT.leftT[Future,List[Error,File]](错误(“失败”)) } 我的问题

我有这样一个价值观:

val ss:Option[未来[列表[错误,文件]]]
我想做的是把它提升到一个
EitherT.liftF[Future,Error,List[Error,File]]]
,所以我做的是:

ss匹配{
case Some(value)=>EitherT.liftF[Future,Error,List[Error,File]](value)
case None=>EitherT.leftT[Future,List[Error,File]](错误(“失败”))
}

我的问题是,我可以使用EitherT.liftF来提升一个已经是未来的值,这是否正确,因为我认为这通常用于需要提升到未来的值,而不是未来本身的值。

future
有一个
Monad
实例,出于实际原因,但实际上并不合法。请参见本主题

然而,在许多情况下,例如在您的情况下,它仍然会像预期的那样运行

您也可以通过以下方式实现它:

EitherT(ss.toRight(错误(“失败”)).sequence)

是的,这是正确的,这是使用
EitherT.liftF
-检查文档:好吧,一个未来一开始甚至是不可取消的。。。但是要诚实。不知道具体使用未来是否会有问题,我从未在实际代码中使用过未来。