我在Scala中理解Int被隐式转换为RichInt。在源代码中发生了什么(我正在浏览Scala源代码,但我找不到它......)
答案 0 :(得分:10)
查看Predef.intWrapper(Int): RichInt
这是Predef
从LowPriorityImplicits
继承的。继承的implicits优先级低于非继承的implicits。
请注意,通过浏览库源,您无法真正看到转换。在小片段中查看它的最佳方法是使用-Xprint:typer
选项编译它(或在REPL中运行它)。这将显示由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
}