我想影响一些Predef成员,并为他们介绍我自己的实现。如何通知编译器应该导入my.own.Predef._而不是scala.Predef._?
答案 0 :(得分:4)
我认为这样做的一种方法是通过链式包条款。
如果my/own/package.scala
处的文件有,例如:
package my
package object own {
type ISeq[+A] = IndexedSeq[A]
val ISeq = IndexedSeq
}
然后,包my.own
或my.own
子包中的任何文件都会自动导入ISeq
,就好像它来自Predef
, IF 您可以从
package my.own.foo
到
package my.own
package foo
后一种形式称为chained package clause。
This article(使用链式包来更改Seq
以使用不可变接口)似乎表明您可以用scala.Predef
这种方式隐藏成员。