在 Scala 中为给定包的所有类提供导入前缀

dev*_*ium 2 import scala

我在大型系统中工作时看到的一个常见模式(问题)是类名冲突。特别是在处理不同的有界上下文时,我们可以在不同的包中找到多个具有相同名称的类。

我已经看到在 Scala 中可以在本地重命名类的名称,但我想知道是否可以重命名来自给定包的所有导入类的名称。我正在寻找类似于

import data.{*-> Data*} // all classes on data.* will appear with a Data prefix
import domain.{*->Domain*} // all classes on domain.P will appear with a Domain prefix
Run Code Online (Sandbox Code Playgroud)

谢谢

Sha*_*nds 5

不,这通常是不可能的。

不过,如果你发现自己想在一个又一个的课上这样做,你可以通过以下方法来经历一次痛苦:

object Mutables {
    import scala.collection.mutable._
    type MMap[K,V] = Map[K,V]
    type MHashMap[K,V] = HashMap[K,V]
    type MSet[A] = Set[A]
    type MHashSet[A] = HashSet[A]
    // etc.
}
Run Code Online (Sandbox Code Playgroud)

然后在需要的地方导入:

import Mutables._ 
Run Code Online (Sandbox Code Playgroud)