Scala Predef unmport

时间:2011-10-03 10:51:17

标签: scala import predef

  

可能重复:
  How to unimport String “+” operator in Scala?

所以来自Predef的东西会自动导入到scala程序中。但是如何禁用 - 从Predef中取消导入某些或所有导入的函数?作为一个例子,如果我不喜欢String上的'+'运算符如何禁用此功能?

1 个答案:

答案 0 :(得分: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
}

我认为这不适用于Scala脚本或REPL。还有一个不受支持的选项-Yno-predef,用于全局自动导入。

相关:SI-1931