Scala 有没有一种方法可以避免在使用trait时重复类型参数?

Scala 有没有一种方法可以避免在使用trait时重复类型参数?,scala,Scala,考虑一下这个代码 val map = new HashMap[(String, String), Set[(String, Int, Double, Int)]] with MultiMap[(String, String), (String, Int, Double, Int)] 有没有一种方法可以在不重复类型参数定义的情况下使用多重映射特性?您可以使用类型别名来减少重复 type K = (String, String) type V = (String, Int

考虑一下这个代码

val map = new HashMap[(String, String), Set[(String, Int, Double, Int)]] 
        with MultiMap[(String, String),     (String, Int, Double, Int)]
有没有一种方法可以在不重复类型参数定义的情况下使用多重映射特性?

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

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)

这通常是值得的

我正打算这么说。另一方面,也许问题的作者想知道如何不重复第二个
[K,V]
@pedrofurla是的,你是对的,但上面是一个很好的解决办法