Scala

2008-09-08 13 views
17

Ben HashMap şöyle ile MultiMap özelliği mixin çalışıyorum yılında MultiMap'in: MultiMap özellik içinScala

val children:MultiMap[Integer, TreeNode] = 
    new HashMap[Integer, Set[TreeNode]] with MultiMap[Integer, TreeNode] 

tanımı ise:

trait MultiMap[A, B] extends Map[A, Set[B]] 

Anlamı o tipleri A bir MultiMap & B, A & Set[B] türlerinin Map'udur, ya da öyle görünüyor ki bana öyle geliyor. Ancak, derleyici, şu hatalardan şikayetçidir: Generiklerin beni tekrar tetikledikleri görülüyor.

cevap

26

scala.collection.mutable.Set'u içe aktarmam gerekiyordu. Derleyici, Set HashMap[Integer, Set[TreeNode]]'un scala.collection.Set olduğunu düşündü. MultiMap def'deki Set, scala.collection.mutable.Set'dur.

12

Bu can sıkıcı olabilir, Scala'nın koleksiyonlarındaki isim aşırı yükleme, büyük zayıflıklarından biridir.

new HashMap[ Integer, mutable.Set[ TreeNode ] ] 
+1

O :-) – fikovnik

+0

Right scala.collection._ aslında sen: sen scala.collection._ ithal olsaydı Ne değer için

, muhtemelen gibi HashMap tipini yazılı olabilirdi! Sabit, çok teşekkürler. – Calum