[英]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.