У меня возникли проблемы с реорганизацией общего кода из 3-х методов и в makeRequest()
, но я получаю неоднозначное неявное соответствие от компилятора. Я не уверен, что это из-за наличия умолчаний для неявных методов или какой-то другой проблемы, но моя цель заключается в том, что getRequest/deleteRequest/postRequest может просто вызвать makeRequest («GET»)/makeRequest («DELETE»)/makeRequest («POST»)). Ранее ни один из параметров не был неявными, я просто пытаюсь достичь цели, используя implicitsScala несколько неявных параметров со значениями по умолчанию, приводящими к неоднозначным значениям
def makeRequest(method: String)(implicit path: String, base: String, params: Seq[(String, String)], body: Option[String], retriesLeft: Int): Future[WSResponse] = ???
def getRequest()(implicit path: String, base: String = baseUrl, params: Seq[(String, String)] = Seq(), body: Option[String] = None, retriesLeft: Int = retries): Future[WSResponse] = makeRequest("GET")
def deleteRequest()(implicit path: String, base: String = baseUrl, params: Seq[(String, String)] = Seq(), body: Option[String] = None, retriesLeft: Int = retries): Future[WSResponse] = makeRequest("GET")
def postRequest[T]()(path: String, body: T, base: String = baseUrl, params: Seq[(String, String)] = Seq(), retriesLeft: Int = retries)
(implicit wrt: play.api.http.Writeable[T], ct : play.api.http.ContentTypeOf[T]): Future[WSResponse] = makeRequest("POST")
Я получаю это и то же самое с deleteRequest
ambiguous implicit values:
[error] both value base of type String
[error] and value path of type String
[error] match expected type String
[error] def getRequest()(implicit path: String, base: String = baseUrl, params: Seq[(String, String)] = Seq(), body: Option[String] = None, retriesLeft: Int = retries): Future[WSResponse] = makeRequest("GET")
Один яркий красный флаг означает, что вам требуется 'implicit' для' String' - вы должны как можно больше избегать определения имплицитов для обычных типов ... Тем не менее, чтобы отлаживать неоднозначные импликации, вам нужно посмотреть вызов сайтов вышеуказанных методов и найти все импликации в области видимости, поэтому информации, которую вы нам предоставили, недостаточно. – Alec
@Alec, я разъясню это в сообщении после этого комментария, но ранее у getRequest/deleteRequest/postRequest были только явные параметры, я пытаюсь реорганизовать общий код из 3-х методов в makeRequest, чтобы я мог сделать каждый метод просто вызовом, т. Е. makeRequest ("GET").Для этого я пытаюсь использовать implicits – irregular
Игнорирует поиск только по типу, а не по имени, поэтому использование 'String' не будет работать должным образом. – Reactormonk