всем . Прошу простить меня за глупый вопрос по Scala.
Хотя я программирую на Scala около 2 лет, мне все еще трудно понять неявное
использование. Давайте рассмотрим пример:
Array(1,2,3,4).map(x => x)
Если вы посмотрите скаладок, то не сможете найти метод map
в классе Array
. Причина, по которой map
может применяться на Array(1,2,3,4)
, заключается в том, что существует неявная функция implicit def intArrayOps (xs: Array[Int]): ArrayOps[Int]
, определенная в scala.Predef
.
Однако, есть два списка параметров, где второй записан как implicit bf: CanBuildFrom[Array[T], B, That])
. Теперь интересно, где компилятор находит подходящий аргумент для типа CanBuildFrom
при применении map
на Array(1,2,3,4)
.