gpt4 book ai didi

scala - 用于在我的 Scalaz 析取中联合不相关的失败案例的类型类

转载 作者:行者123 更新时间:2023-12-03 17:51:45 25 4
gpt4 key购买 nike

我对 Scalaz 析取有一个理解。这些左边的类型可以是来自其他库的不同类型的错误案例类。例如,一个失败案例可能是由于 HTTP 超时,而另一个可能代表 Play 中的 Json 解析错误。

有没有一种方法可以使用某种形式的类型类来声明“这 4 个类/特征都是这种类型的错误”,而实际上并不让它们从共同特征继承?如果确实存在这种情况,则还需要能够在 for comprehension 中进行推断。

最佳答案

我是 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)

关于scala - 用于在我的 Scalaz 析取中联合不相关的失败案例的类型类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19720266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com