我试图将两个Option[Iterable[_]]
合并为一个新的Option[Iterable[_]]
。如果其中一个(或两个)元素是Some和None,我想返回一个Some。似乎应该有一个这样做的惯用方式,但我似乎无法找到一个。以下似乎做我想要的,但不是我想要的那种光滑的解决方案。组合Scala选项[Iterable [_]]
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
}
任何提示将不胜感激。谢谢!
那种近乎类似的问题: http://stackoverflow.com/questions/10617979/binary-operator-with-option-arguments/10618340#10618340,可能有帮助 – 2012-08-06 02:11:08