Почему неявный сбой, когда расширенный класс является универсальным в Scala? - PullRequest
0 голосов
/ 31 декабря 2011

Почему работает следующий код:

class X

class A(implicit c: X)
class B(arg: Int)(implicit c: X) extends A
class C(arg: Int)(implicit c: X) extends B(arg)

Но не этот:

class X

class A(implicit c: X)
class B[T](arg: T)(implicit c: X) extends A
class C(arg: Int)(implicit c: X) extends B(arg)

, который завершается ошибкой:

ошибка: не удалось найти неявное значение для параметра c: core.X

класс C (arg: Int) (неявный c: X) расширяет B (arg)

1 Ответ

4 голосов
/ 31 декабря 2011

Кажется, это работает, если вы помогаете логическому выводу типов при вызове конструктора для B:

class X

class A(implicit c: X)
class B[T](arg: T)(implicit c: X) extends A
class C(arg: Int)(implicit c: X) extends B[Int](arg)

Так что это не выглядит как фундаментальное ограничение.Но сообщение об ошибке, которое вы не включили, очень бесполезно не удалось найти неявное значение для параметра c: X .

...