基本隐式查询

tin*_*tin 0 scala

我是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)

jwv*_*wvh 5

查看API 的ScalaDocs页面Int.的Int类有一个+()用于添加的方法String.

abstract def +(x: String): String
Run Code Online (Sandbox Code Playgroud)

但它没有*()方法可以乘以a String.编译器将始终在隐式上选择已定义的函数/方法.它只会寻找隐含的解决方案作为最后的手段.