Объединение Scala Option[Iterable[_]]

Я пытаюсь объединить два Option[Iterable[_]]в новый Option[Iterable[_]]. Я хотел бы вернуть Some, если один (или оба )элемента являются Some и None в противном случае. Кажется, должен быть идиоматический способ сделать это, но я не могу его найти. Следующее, похоже, делает то, что я хочу, но это не совсем то решение, на которое я надеялся.

def merge(
    i1: Option[Iterable[_]], i2: Option[Iterable[_]]
): Option[Iterable[_]] = (i1, i2) match {
   case (Some(as), Some(bs)) => Some(as ++ bs)
   case (a @ Some(as), None) => a
   case (None, b @ Some(bs)) => b
   case _ => None
}

Любые советы приветствуются. Спасибо!

5
задан dhg 5 August 2012 в 22:53
поделиться