2

このコードを検討してください

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

タイプパラメータの定義を繰り返さずにマルチマップトレイトを使用する方法はありますか?

4

1 に答える 1

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)

それは通常それだけの価値があります!

于 2012-08-27T23:23:17.967 に答える