Используйте flatten
над options
, чтобы уменьшить options
до тех, которые имеют значение.Затем используйте headOption
для возврата Option
, содержащего первое имеющееся значение, или None
.Наконец, получите значение T
из Option
или верните defaultValue
.
def customGetOrElse[T](options : Array[Option[T]], defaultValue : T) : T = {
options.flatten.headOption.getOrElse(defaultValue)
}
Примеры:
scala> customGetOrElse[Int](Array(None, None), 666)
res29: Int = 666
scala> customGetOrElse[Int](Array(None, Some(42)), 666)
res30: Int = 42