我試圖將兩個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