我有以下代码:
val dataFrames: List[DataFrame] = [...]
// TODO There has to be a better way to do lines below.
val salesOrderDF: Option[sql.DataFrame] =
if (dataFrames.length > 1) {
Some(dataFrames.reduceRight(_.union(_)))
} else if (dataFrames.length == 1) {
Some(dataFrames.head)
} else {
None
}
有更好的方法吗?似乎可以以某种方式合并if
和else if
个案。
答案 0 :(得分:2)
您不需要else if
,只有一个元素的reduce
将返回该元素。如果您不想使用if-else,则可以检查列表是否为空并且模式匹配。
val salesOrderDF: Option[sql.DataFrame] = dataFrames match {
case Nil => None
case nonEmptyDfs => Some(nonEmptyDfs.reduce(_ union _))
}