Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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
Advertisement
Add Comment
Please, Sign In to add comment