我正在尝试将两个组合Option[Iterable[_]]成一个新的Option[Iterable[_]].如果其中一个(或两个)元素是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
}
Run Code Online (Sandbox Code Playgroud)
任何提示都表示赞赏.谢谢!