Я думаю, что недоразумение в том, что ()
не является значением типа Unit
, а вместо этого представляет пустой список аргументов.Так что
() => "Hello"
является унарной функцией без аргументов.Однако ваша черта ожидает функцию, которая принимает один аргумент типа Unit
.
. Если вы удалите override
, который здесь не нужен, вы получите ошибку компилятора, которая укажет вам наэто направление.Если вы замените ()
на подстановочный знак _
или еще лучше (_: Unit)
, ваш код скомпилируется.
trait Foo[T] {
val x: T => Any
}
trait Bar extends Foo[Unit] {
val x: Unit => Any = (_: Unit) => "Hello"
}