2012-05-31 13 views

risposta

18

Si noti che Map è un trait, non un class.

È ancora possibile alias utilizzando la parola chiave type:

type StringMap[A] = Map[String, A] 

val myMap: StringMap[Int] = Map("a" -> 1) 

Questo può essere fatto nell'ambito di una definizione class, object o trait (e del perimetro di qualsiasi metodo o espressione).

A volte si desidera che l'alias sia privato per il suo ambito di dichiarazione, puramente per comodità del codice di implementazione. Se si desidera che il tipo da essere utilizzabile in generale, Package Objects tornare utile:

package object mypackage { 
    type StringMap[A] = Map[String, A] 
} 

Perché Map è un tratto (e oggetto associato associato) e non una classe, non sarà in grado di utilizzare direttamente per creare casi:

val myMap = new StringMap[Int] 
// error: trait Map is abstract; cannot be instantiated 

Se trasformare un classe, però, è ancora possibile utilizzare la parola chiave new:

type StringHashMap[A] = HashMap[String, A] 
val myMap = new StringHashMap[Int] 
+0

Grazie, mappa era un cattivo esempio, volevo dire (caso) di classe – iwalktheline

Problemi correlati