
Untitled
By: a guest on
Jul 6th, 2012 | syntax:
None | size: 1.01 KB | hits: 13 | expires: Never
Defining a ChainedMap in Scala
import scala.collection.generic.ImmutableMapFactory
import scala.collection.immutable.HashMap
class ChainedMap[A, B](private val superMap: ChainedMap[A, B])
extends HashMap[A, B] {
override def get(key: A): Option[B] = {
if (contains(key)) {
get(key)
} else if (superMap != null) {
superMap.get(key)
} else {
None
}
}
}
object ChainedMap extends ImmutableMapFactory[ChainedMap] {
override def apply[A, B](superMap: ChainedMap[A, B],
elems: (A, B)*): ChainedMap[A, B] = {
// What goes here?
}
}
val parentMap = ChainedMap(null, "x" -> 1, "y" -> 2)
val childMap = ChainedMap(parentMap, "a" -> 42)
scala> val parentMap = Map("x" -> 1, "y" -> 2)
parentMap: scala.collection.immutable.Map[java.lang.String,Int] = Map((x,1), (y,2))
scala> val childMap = Map("a" -> 42) withDefault parentMap
childMap: scala.collection.immutable.Map[java.lang.String,Int] = Map((a,42))
scala> childMap("x")
res5: Int = 1