неявное преобразование источника в Scala из Int в RichInt - PullRequest
9 голосов
/ 06 октября 2011

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

1 Ответ

10 голосов
/ 06 октября 2011

Посмотрите на 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
}
...