And*_*ert 9 import scala predef
可能重复:
如何在Scala中取消导入字符串"+"运算符?
所以来自Predef的东西会自动导入到scala程序中.但是如何禁用 - 从Predef中取消导入某些或所有导入的函数?作为一个例子,如果我不喜欢String上的'+'运算符如何禁用此功能?
ret*_*nym 18
如链接答案中所述,该方法String#+(other: Any)
使用编译器魔术添加到String类,而不是使用隐式转换.因此,它与自动导入无关Predef._
.
这同样适用于Int#+(x: String)
其他值类型的相应方法.
但是,还有另一个字符串连接方法,它通过隐式转换添加Predef
.x + "2"
被视为Predef.any2stringAdd(x).+("2")
.通过显式导入Predef
文件的第一行,您可以将不需要的成员重命名为_
禁用它们.
import Predef.{any2stringadd => _, _}
object Test {
object A
A + "20" // error: value + is not a member of object Test.A
}
Run Code Online (Sandbox Code Playgroud)
我认为这不适用于Scala脚本或REPL.还有一个不受支持的选项,-Yno-predef
用于全局自动导入.
相关:SI-1931