Предположим, у меня есть следующее
case class Foo(a: Option[Int])
val bar = Seq(Foo(Some(0)), Foo(Some(1)), Foo(None))
val baz = Seq(0, 2)
, и я хочу проверить, существует ли a
типа Option[Int]
в Seq[Int]
Это не работает
bar.map {
case foo: Foo if !baz.contains(foo.a) => Foo(None)
case foo: Foo => foo
}
Поскольку a
относится к типу Option[Int]
, поэтому contains(foo.a)
всегда возвращает false
Я знаю, что могу сделать что-то вроде следующего:
bar.map {
case foo: Foo if foo.a.isEmpty || !baz.contains(foo.a.get) => Foo(None)
case foo: Foo => foo
}
bar.map {
case Foo(None) => Foo(None)
case Foo(Some(a)) if !baz.contains(a) => Foo(None)
case foo: Foo => foo
}
Но мне интересно, есть ли другой способ, в основном containsOption
или любой другой интересный подход