Скажем, что функция с двумя необязательными параметрами представляет собой два разных условия фильтрации.более простой способ фильтрации двух необязательных условий
def judge(a: Option[Int], b: Option[Int]) {
// here filter according the values of `a` and `b` if are set (not empty)
// if `a` or `b` is empty, then ignore.
// And if `a` and `b` both are empty, then filtering get nothing.
val objs: List[SomeObject] = ...
if (!(a.isEmpty) || !(b.isEmpty)) {
objs.filter { obj =>
a.map(_ == obj.a).getOrElse(true) && b.map(_ == obj.b).getOrElse(true)
}
} else {
List[SomeObject]()
}
}
Кажется, работает, но я думаю, что путь немного подробный. Есть ли еще более простой способ сделать это?