Я пытаюсь написать общую функцию, которая принимает общий контейнер, который реализует «++», однако я не могу получить синтаксис правильно.Общая функция с ограничениями типов
def pagedRequest[A, C[_] <: Iterable](url: String, accumulator: C[A])(parser: (WSResponse) => C[A]): Future[Either[Result, C[A]]] = {
WS.url(url).get().flatMap { response =>
response.status match {
case OK =>
val data = accumulator ++ parser(response)
(response.json \ "paging" \ "next").asOpt[String] match {
case None => Future.successful(Right(data))
case Some(next) => pagedRequest(next, data)(parser)
}
case _ =>
Future.successful(Left(ProxiedResult(response)))
}
}
}
Тип «данных» сохраняется как Iterable [A], а не C [A].