Guest User

Untitled

a guest
Jul 6th, 2012
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment