/ / Klasa typu do łączenia niepowiązanych przypadków awarii w moich działach Scalaz - scala, scalaz, bezkształtny, scalaz7

Typuj klasy do łączenia niepowodzeń niepowiązanych w moich disjunctions Scalaz - scala, scalaz, shapeless, scalaz7

Muszę zrozumieć Scalasazakłócenia. Pozostawione na nich typy mogą być różnymi typami klas przypadków błędów z innych bibliotek. Na przykład jeden przypadek niepowodzenia może wynikać z przekroczenia limitu czasu HTTP, podczas gdy inny może reprezentować błąd analizy Json w Play.

Czy istnieje sposób użycia jakiejś formy klasy typuzadeklarować, że „te 4 klasy / cechy są tego rodzaju błędami” bez faktycznego dziedziczenia od wspólnej cechy? Jeśli tak się stanie, należałoby również wnioskować w ramach zrozumienia.

Odpowiedzi:

0 dla odpowiedzi № 1

Jestem nowy w scalaz, ale w ten sposób poradziłem sobie z tym problemem:

Zdefiniuj naszych dekoratorów

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

Posługiwać się leftMap

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