Option[Iterable[_]]
2つを組み合わせて新しいものにしようとしてい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
}
ヒントをいただければ幸いです。ありがとう!