This page is no longer maintained — Please continue to the home page at www.scala-lang.org

filterKeys

1 reply
extempore
Joined: 2008-12-17,
User offline. Last seen 35 weeks 3 days ago.

Was the former implementation accomplishing something desirable? I
couldn't figure it out if so.

- def filterKeys(p: A => Boolean) = new DefaultMap[A, B] {
- override def foreach[C](f: ((A, B)) => C): Unit = for (kv <- self) if (p(kv
- def elements = self.elements.filter(kv => p(kv._1))
- override def contains(key: A) = self.contains(key) && p(key)
- def get(key: A) = if (!p(key)) None else self.get(key)
- }
+ def filterKeys(p: A => Boolean): This = this filter (kv => p(kv._1))

Also, I propose filterKeys be deprecated.

odersky
Joined: 2008-07-29,
User offline. Last seen 45 weeks 6 days ago.
Re: filterKeys

On Tue, May 19, 2009 at 1:18 PM, Paul Phillips wrote:
> Was the former implementation accomplishing something desirable? I
> couldn't figure it out if so.
>
> -  def filterKeys(p: A => Boolean) = new DefaultMap[A, B] {
> -    override def foreach[C](f: ((A, B)) => C): Unit = for (kv <- self) if (p(kv
> -    def elements = self.elements.filter(kv => p(kv._1))
> -    override def contains(key: A) = self.contains(key) && p(key)
> -    def get(key: A) = if (!p(key)) None else self.get(key)
> -  }
> +  def filterKeys(p: A => Boolean): This = this filter (kv => p(kv._1))
>
No, the two are different. One is lazy and the other is strict.
filterKeys would be the same as

this.view.filter(p)

except that map views do not (yet?) exist.

Cheers

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland