Writeable[TraversableOnce[JsonError]] - все импилиситы которые находятся в в компаньоне Writeable и возвращают подходящий тип Writeable[T] - попадают в скоуп. в этом случае он видит подходящую сигнатуру (по возвращаемому типу) -
implicit def traversableWriteable[A: Writeable]: Writeable[TraversableOnce[A]] = ???
и тут ему нужно зарезолвить уже Writeable[A] (чтобы воспользоваться этим имплиситом, в данном случае Writeable[JsonError] ) - опять таки в рамках скоупа все той же первой строки. имплисит для Writeable[JsonError] смотрится не только в компаньоне Writable, но и в компаньоне JsonError это то о чем Алексей выше сказал -
ищутся во всех компаньонах всех типов...
) и соответственно в компаньоне JsonError он видит подходящий имплисит Writeable[JsonError]. так понятно?
Если бы был implicit def traversableWriteable[A: Writeable]: Writeable[TraversableOnce[A]] = ??? то это было бы очевидно, я бы не стал спрашивать, но эта функция не определена
Обсуждают сегодня