Я так понимаю в Scala Int неявно конвертируется в RichInt. Где это происходит в исходном коде (я просматривал исходный код Scala, но не смог его найти...)
неявное преобразование источника scala из Int в RichInt
Ответы (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