Есть два способа (если не больше) об этом go.
Мне нравится метод fold()
, но вы должны повторно обернуть Option
.
def findfour(start : List[Int]) : Option[SomeObject] =
start.find(_ equals 4)
.fold{logger.info(...)
Option.empty[SomeObject] //re-create the None
}(x =>Some(SomeObject(x)))
С другой стороны, если вы используете Scala 2.13.x, то новые методы объединения могут быть немного чище и понятнее.
import scala.util.chaining._
def findfour(start : List[Int]) : Option[SomeObject] =
start.find(_ equals 4)
.tap(x => if (x.isEmpty) logger.info(...))
.map(SomeObject)