Принятие объединения возможно пустого списка фреймов данных - PullRequest
0 голосов
/ 03 мая 2018

У меня есть следующий код:

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 можно каким-то образом объединить.

1 Ответ

0 голосов
/ 03 мая 2018

Вам не нужен else if, reduce с одним элементом просто вернет этот элемент. Если вы не хотите использовать if-else, вы можете проверить, пуст ли список с совпадением с шаблоном.

val salesOrderDF: Option[sql.DataFrame] = dataFrames match {
    case Nil => None
    case nonEmptyDfs => Some(nonEmptyDfs.reduce(_ union _))
}
...