我是Scala的新手,并试图了解隐含的魔法.我想知道为什么我越来越2mysize与+功能和2 *为长度*的功能?
implicit def addToStr(str: String) = str.size
scala> 2 * "mysize"
res4: Int = 12
scala> 2 + "mysize"
res3: String = 2mysize
Run Code Online (Sandbox Code Playgroud)
查看API 的ScalaDocs页面Int.的Int类有一个+()用于添加的方法String.
abstract def +(x: String): String
Run Code Online (Sandbox Code Playgroud)
但它没有*()方法可以乘以a String.编译器将始终在隐式上选择已定义的函数/方法.它只会寻找隐含的解决方案作为最后的手段.