scala-library-next
scala-library-next copied to clipboard
Add `option.diff`
Add diff to Option for a symmetry with Seq. Reference implementation:
implicit class OptionValueOps[T](private val o: Option[T]) extends AnyVal {
final def diff(that: Option[T]): Option[T] = {
if (that.exists(o.contains)) None
else o
}
}
It can be even made a little bit more general:
implicit class OptionValueOps[T](private val o: Option[T]) extends AnyVal {
final def diff(that: Iterable[T]): Option[T] = {
if (o.exists(that.contains)) None
else o
}
}
Note: o.exists(that.contains) should be more performant than that.exists(o.contains) when that.contains is more efficient than that.exists, e.g. for Set.