问题描述
此帖子:
Where does Scala look for implicits?
描述了现代scala编译器使用的隐式搜索优先级和算法。在上面的列表中,直接导入的隐式函数应该比关联类型(例如,在伴随对象中定义)的作用域具有更高的优先级
在大多数情况下,直到直接导入的Predef.scala开始干扰为止,该规则才有意义:
abc
abc 1.0
abcd 0.0
abec 0.0
ab 0.0
abcde 0.0
qwe 0.0
上面的示例应该可以成功编译,但是在Predef中定义的所有类的+运算符覆盖都占据了主导地位,并导致所有带有+运算符的扩展都是无用的(除非在更严格的范围内显式导入)。这很烦人,是否有办法禁用Predef中的隐式或“降低”其优先级?
以上实验已在scala 2.12.12和2.13.3中进行