私は私のコードをさらに抽象化できると感じていますが、私はちょっと立ち往生しています。私はこれを挑戦としてもっとやっているので、時期尚早の最適化については心配しないでください。私のオープンソースライブラリReactive Kraken用です。スカラ、非常によく似たタイプの抽象ロジック
このコードを見ると、私が意味することを得ることができます。
case class Response[T](error: List[String], result: Option[Map[String, T]])
case class OrderResponse[T](error: List[String], result: Option[T])
def handleRequest[T: JsonFormat](request: HttpRequest): Future[Response[T]] =
fireRequest(request)
.map(_.parseJson.convertTo[Response[T]])
.recover { case t: Throwable => Response[T](List(t.getMessage), None) }
def handleOrderRequest[A: JsonFormat](request: HttpRequest): Future[OrderResponse[A]] =
fireRequest(request)
.map(_.parseJson.convertTo[OrderResponse[A]])
.recover { case t: Throwable => OrderResponse[A](List(t.getMessage), None) }
これらの2つの機能の違いは、単純に返されるタイプです。これについてどうやって行きますか?おそらくより高い 種類を使用していますか?