你可以写得更短:
seq.filterNot(someSet)
.withFilterNot
object PimpSyntax {
implicit class PimpedSeq[T](val seq: Seq[T]) extends AnyVal {
def withFilterNot(filter: T => Boolean) = seq.withFilter(!f(_))
}
}
现在,只是
import PimpSyntax._
,你可以写这样的东西
seq.withFilterNot(someSet)
只要你喜欢。
或者,更好的是:
object PimpSyntax {
implicit class Negator[T](val f: T => Boolean) extends AnyVal {
def unary_!: T => Boolean = !f(_)
}
}
有了这个,你不仅可以
seq.withFilter(!someSet)
seq.partition(!someSet)
,
seq.find(!someSet)
seq.dropWhile(!someSet)
等