我正在尝试将两个组合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
}
任何提示表示赞赏。谢谢!