Я прочитал ответ на свой вопрос о 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
?