簡體   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