Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 6th, 2012  |  syntax: None  |  size: 1.01 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Defining a ChainedMap in Scala
  2. import scala.collection.generic.ImmutableMapFactory
  3. import scala.collection.immutable.HashMap
  4.  
  5. class ChainedMap[A, B](private val superMap: ChainedMap[A, B])
  6.   extends HashMap[A, B] {
  7.   override def get(key: A): Option[B] = {
  8.     if (contains(key)) {
  9.       get(key)
  10.     } else if (superMap != null) {
  11.       superMap.get(key)
  12.     } else {
  13.       None
  14.     }
  15.   }
  16. }
  17.  
  18. object ChainedMap extends ImmutableMapFactory[ChainedMap] {
  19.   override def apply[A, B](superMap: ChainedMap[A, B],
  20.                            elems: (A, B)*): ChainedMap[A, B] = {
  21.     // What goes here?
  22.   }
  23. }
  24.        
  25. val parentMap = ChainedMap(null, "x" -> 1, "y" -> 2)
  26. val childMap = ChainedMap(parentMap, "a" -> 42)
  27.        
  28. scala> val parentMap = Map("x" -> 1, "y" -> 2)            
  29. parentMap: scala.collection.immutable.Map[java.lang.String,Int] = Map((x,1), (y,2))
  30.  
  31. scala> val childMap = Map("a" -> 42) withDefault parentMap
  32. childMap: scala.collection.immutable.Map[java.lang.String,Int] = Map((a,42))
  33.  
  34. scala> childMap("x")
  35. res5: Int = 1