2013-01-08 17 views
6

Potrzebuję HashMap list. Normalnie to zrobić:Scala HashMap list: prostsze ustawienie domyślne?

val lists = mutable.HashMap[String,List[Int]]() { 
    override def default(key: String) = { 
    val newList = List[Int]() 
    this(key) = newList 
    newList 
    } 
} 

tak, że mogę po prostu pisać takie rzeczy jak

lists("dog") ::= 14 

bez konieczności martwienia się o to, czy na liście „pies” został jeszcze zainicjowany.

Czy jest to czystszy sposób? Znowu znajduję te pięć domyślnych linii zastępujących.

Dzięki!

Odpowiedz

15

Co z withDefaultValue()?

val lists = new mutable.HashMap[String,List[Int]].withDefaultValue(Nil) 

lists("dog") ::= 13 
lists("cat") ::= 14 
lists("dog") ::= 15 //(13, 15) 

Zobacz także

+3

Doskonała! Tylko bilet. Właśnie dlatego kocham stackoverflow. –