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

时间:2015-09-25 01:23:39

标签: scala import

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

我已经看到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

由于

1 个答案:

答案 0 :(得分:3)

不,这通常不可能。

如果你发现自己想在课堂上这样做,你可以通过以下方式解决这个问题:

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.
}

然后在需要的地方导入:

import Mutables._