Извинения, это будет несколько нуб-i sh вопрос. У меня есть объект из библиотеки slick, который имеет такой тип:
Query[(Rep[String], Rep[String]), (String, String), Seq]
Я пытаюсь написать функцию, которая принимает запросы в качестве аргументов, хотя последовательности в них имеют неопределенную длину - ie, это также может быть:
Query[(Rep[String], Rep[String], Rep[String]), (String, String, String), Seq]
Таким образом, первые два компонента имеют три элемента, а не два. Я не могу понять, как это делается. Я пробовал различные ошибочные перестановки, такие как Query[Product[Rep[String]], Product[String], Seq]
, но безрезультатно, и даже то, что я предположил, было бы ядерным вариантом простого использования Any
, не работает. Мои сообщения об ошибках похожи на
[error] found : Option[slick.driver.H2Driver.api.Query[(slick.driver.H2Driver.api.Rep[String], slick.driver.H2Driver.api.Rep[String]),(String, St
ring),Seq]]
[error] (which expands to) Option[slick.lifted.Query[(slick.lifted.Rep[String], slick.lifted.Rep[String]),(String, String),Seq]]
[error] required: Option[slick.driver.H2Driver.api.Rep[scala.concurrent.Future[List[String]]]]
[error] (which expands to) Option[slick.lifted.Rep[scala.concurrent.Future[List[String]]]]
[error] ReturnFunctions.completeQuery(db, query, serialize_and_send)
Я думаю, что моя неспособность решить эту проблему может отражать фундаментальное отсутствие понимания scala, строго типизированных языков в целом и, возможно, также вычислений в целом. Должен ли я разрешить этот запрос в какой-то более определенной форме, прежде чем пытаться передать его в функцию? Я также подозреваю, что неправильно интерпретирую исходный тип - что означают в этом контексте паратезы? Может быть, Query ожидает получить три набора параметров, один за другим, например, когда вы делаете fn (arg1) (arg2) (arg3) = ...?
Любая помощь с этой тревожной дилеммой с благодарностью получил.