繁体   English   中英

在我的Scalaz析取中键入用于联合不相关失败案例的类

[英]Type class for uniting unrelated failure cases in my Scalaz disjunctions

我对Scalaz分离有所了解。 这些上的左侧类型可以是来自其他库的不同类型的错误案例类。 例如,一个故障情况可能是由于HTTP超时,而另一个故障情况可能表示Play中的Json解析错误。

有没有办法使用某种形式的类来声明'这4个类/特征都是这种类型的错误'而不实际让它们从一个共同的特征继承? 如果确实存在,则还需要能够在理解中推断出它。

我是scalaz的新手,但这就是我处理这个问题的方法:

定义我们的装饰器

sealed trait RequestError
case class ParseError(e: PlayJsonError) extends RequestError
case class HttpTimeoutError(e: NettyHttpError) extends RequestError

使用leftMap

val r: RequestError \/ Message = for{
 a <- readHttpContent().leftMap(e => HttpTimeoutError(e))
 b <- parse(a).leftMap(e => ParseError(e))
} yield(b)

暂无
暂无

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

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