有没有办法避免在使用特征时重复类型参数?

时间:2012-08-27 23:20:05

标签: scala

考虑这段代码

val map = new HashMap[(String, String), Set[(String, Int, Double, Int)]] 
        with MultiMap[(String, String),     (String, Int, Double, Int)]

有没有办法在不重复类型参数定义的情况下使用Multimap特征?

1 个答案:

答案 0 :(得分:8)

您可以使用类型别名来减少重复

type K = (String, String)
type V = (String, Int, Double, Int)

然后您的地图变为

val map = new HashMap[K, Set[V]] with MultiMap[K, V]

然而,作为一种风格规则,我认为在代码中使用 TupleN 特性并不是一个好主意,原因如下:

  • 他们更难重构(例如,如果你需要一个额外的领域)
  • 它们代表什么不太明显

考虑到创建定制课程的开销很小:

case class K(p1: String, p2: String)

通常值得!