summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-02-19 13:56:55 +0000
committerMartin Odersky <odersky@gmail.com>2007-02-19 13:56:55 +0000
commit68508bdd74fbb6e14143132b5e9bdaf89e4adf06 (patch)
tree53d5c39fe5d0f77aaca88484cc8b1479a58a67ce /src/library
parentce7fe41d5f7d831648068c8d82b7c6caa27aa3f5 (diff)
downloadscala-68508bdd74fbb6e14143132b5e9bdaf89e4adf06.tar.gz
scala-68508bdd74fbb6e14143132b5e9bdaf89e4adf06.tar.bz2
scala-68508bdd74fbb6e14143132b5e9bdaf89e4adf06.zip
added explicit self defs
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/collection/immutable/Map.scala16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/library/scala/collection/immutable/Map.scala b/src/library/scala/collection/immutable/Map.scala
index 108cb07f44..65b0df4979 100644
--- a/src/library/scala/collection/immutable/Map.scala
+++ b/src/library/scala/collection/immutable/Map.scala
@@ -132,6 +132,22 @@ trait Map[A, +B] extends collection.Map[A, B] {
def -- (keys: Iterator[A]): Map[A, B] =
(this /: keys) ((m, key) => m - key)
+
+ /** The same map with a given default function */
+ def withDefault[B1 >: B](d: A => B1): Map[A, B1] = new Map[A, B1] {
+ def size = Map.this.size
+ def get(key: A) = Map.this.get(key)
+ def elements = Map.this.elements
+ def empty[C] = Map.this.empty
+ def update [B2 >: B1](key: A, value: B2): Map[A, B2] =
+ Map.this.update(key, value) withDefault d
+ def -(key: A): Map[A, B1] = Map.this - key withDefault d
+ override def default(key: A): B1 = d(key)
+ }
+
+ /** The same map with a given default value */
+ def withDefaultValue[B1 >: B](d: B1): Map[A, B1] = withDefault(x => d)
+
/** This function transforms all the values of mappings contained
* in this map with function <code>f</code>.
*