所以 Predef 中的东西会自动导入到 scala 程序中。但是如何禁用从 Predef 中取消导入某些或所有导入的函数?例如,如果我不喜欢 String 上的“+”运算符,如何禁用此功能?
问问题
2500 次
1 回答
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
于 2011-10-03T12:15:52.857 回答