неявное преобразование источника scala из Int в RichInt

Я так понимаю в Scala Int неявно конвертируется в RichInt. Где это происходит в исходном коде (я просматривал исходный код Scala, но не смог его найти...)


person Jeff Storey    schedule 06.10.2011    source источник


Ответы (1)


Посмотрите на Predef.intWrapper(Int): RichInt

Это унаследовано Predef от LowPriorityImplicits. Унаследованные имплициты имеют более низкий приоритет, чем ненаследуемые.

Обратите внимание, что, просматривая исходный код библиотеки, вы не сможете увидеть преобразование. Лучший способ увидеть это на небольшом фрагменте — это скомпилировать его (или запустить в REPL) с параметром -Xprint:typer. Это покажет преобразование, которое вставляется типизатором, чтобы компилировать код, когда типы не совпадают:

$ scala -Xprint:typer

scala> 3.abs
[[syntax trees at end of typer]]// Scala source: <console>
// stuff removed
        private[this] val res0: Int = scala.this.Predef.intWrapper(3).abs;
// more stuff removed
}
person huynhjl    schedule 06.10.2011