Вы пытаетесь создать экземпляр анонимного класса, придав ему параметр типа, но ваша черта не принимает один trait Yo
должен быть trait Yo[TYPE]
, второй вы расширяете функцию от AAA
до String
, так что вы должны обеспечить возможность обращения Способ для этого, третий для случая объекты, которые вы должны использовать .type
, также называемый одноплодной аннотацию типа:
trait AAA
case object BBB extends AAA
case object CCC extends AAA
trait Yo[TYPE] extends (AAA => String)
def bb = new Yo[BBB.type] {
override def apply(v1: AAA): String = ???
}
Если вы хотели применить, зависит от типа параметра вы должны сделать что-то вроде этого:
trait Yo[TYPE] extends (TYPE => String)
def bb = new Yo[BBB.type] {
override def apply(v1: BBB.type): String = ???
}
Edit: я не заметил, что ты хотел сделать его полиморфные, в этом случае просто удалите параметр типа от признака, вы не все равно использовать его:
trait AAA
case object BBB extends AAA
case object CCC extends AAA
trait Yo extends (AAA => String)
def bb = new Yo {
override def apply(v1: AAA): String = ???
}
У вас есть свой ответ, но вы могли бы разместить ошибки компиляции. Из-за них «Yo не принимает параметры типа», которые указывали бы вам в правильном направлении. Затем следующая ошибка «не найдена: введите BBB», что является еще одним сильным намеком на то, что объект не является типом. И так далее. –