可能重复:
如何在Scala中取消导入字符串"+"运算符?
所以来自Predef的东西会自动导入到scala程序中.但是如何禁用 - 从Predef中取消导入某些或所有导入的函数?作为一个例子,如果我不喜欢String上的'+'运算符如何禁用此功能?
scala包对象中定义的内容与之间的区别是什么Predef?
是Predef刚刚从前期2.8的遗物时,包对象不存在,或者是有一些其他的原因,我们都需要?
我正在使用Predef带有-Yno-predef标志的自定义。它基本上是SlamData 的副本。
当我尝试展平嵌套的 immutable Seqs 集合时,我收到错误:
No implicit view available from my.Predef.Seq[String] => scala.collection.GenTraversableOnce[String].
Run Code Online (Sandbox Code Playgroud)
如果我把import scala.Predef._它再次编译。我试图调查scala.Predef并scala打包对象,但是当我试图复制TraversableOnce's, Traversable's 或Seq's 的定义时,它没有帮助。
有人知道 vanilla predef 的哪一部分负责生成这个隐式吗?
在尝试向Either添加隐式方法时,今天遇到了一个非常奇怪的问题.
implicit class EitherProvidesRollback[String,B](e: Either[String,B]) {
def rollback(
ss: Option[Session], overrideMsg: Option[String]): Either[String,B] = {
e.fold(
msg=> {
ss.map(_.rollback)
// found String required java.lang.String, FTW
// Left(i18n(overrideMsg.getOrElse(msg)))
// behold, the horrible hack
Left(i18n(overrideMsg.getOrElse(msg).toString).asInstanceOf[String])
},
Right(_)
)
}
}
Run Code Online (Sandbox Code Playgroud)
i18n方法采用了一个字符串,其中AFAICT正是它所获得的.根据此线程,解决方法是T <: String在隐式类'类型签名中.看来Predef可能会在这里发挥作用.
有没有办法让这个工作没有可怕的运行时转换,同时保持类型签名正好字符串?
谢谢