trait JsonOps[J] {
type ObjectFields
def partitionObjectFields(fields: ObjectFields, fieldNames: List[String]): (ObjectFields, ObjectFields)
}
def compilerNoLikey[J](stuff: ops.ObjectFields)(implicit ops:JsonOps[J]) = {}
def compilerLikey[J](stuff: Any)(implicit ops:JsonOps[J]) = {
val stuff2 = stuff.asInstanceOf[ops.ObjectFields]
}
Вы можете увидеть мои намерения здесь.Я определяю тип в JsonOps для инкапсуляции структуры, зависящей от J. Затем, когда я захочу использовать это, у меня есть функция, которая неявно передает объект JsonOps [J], а также параметр типа ObjectFields.
Проблема в том, что ObjectFields определяется в ops, что происходит после содержимого в подписи.
Как я могу это расшифровать?
Второе определение работает, но я не люблю передавать Any вокруг,Я бы хотел, чтобы компилятор мог проверить, что передается.