首页 > 解决方案 > 斯卡拉:嵌套getOrElse

问题描述

我想创建一个方法,该方法将选项数组和默认值作为参数,并返回第一个非空选项,否则返回默认值:

def customGetOrElse[T](options : Array[Option[T]], defaultValue : T) : T = {
  // Example if options contain 2 elements
  options(0).getOrElse(options(1).getOrElse(defaultValue))
  // If options contain 3 elements
  options(0).getOrElse(options(1).getOrElse(options(2).getOrElse(defaultValue)))
}

但我正在努力使这种方法适用于任何大小的数组。有任何想法吗 ?

谢谢!

标签: scalascala-option

解决方案


def customGetOrElse[T](options : Array[Option[T]], defaultValue : T) : T = {
  options.find(_.isDefined).flatten.getOrElse(defaultValue)
}

推荐阅读