Передача scala.math.Integral в качестве неявного параметра

Я прочитал ответ на свой вопрос о scala.math. Integral , но я не понимаю, что происходит, когда Integral [T] передается как неявный параметр. (Думаю, я понимаю концепцию неявных параметров в целом.)

Давайте рассмотрим эту функцию

import scala.math._

def foo[T](t: T)(implicit integral: Integral[T]) { println(integral) }

Теперь я вызываю foo в REPL:

scala> foo(0)  
scala.math.Numeric$IntIsIntegral$@581ea2
scala> foo(0L)
scala.math.Numeric$LongIsIntegral$@17fe89

Каким образом аргумент интеграл стать scala.math.Numeric $ IntIsIntegral и scala.math.Numeric $ LongIsIntegral ?

15
задан Andrii Abramov 25 July 2017 в 13:57
поделиться