Scala にはList
、オプションの がありますOption
。これは、たとえば、でfor
内包表記を使用しList
、yield が を返す場合に発生しますOption
。私の場合、JSON オブジェクトを処理し、for
フィールドのリスト ( List[JField]
) で内包表記を使用していました。
リストを開いて と にマップする最良の方法は何List()
ですか?None
List(Some(a))
Some(a)
最初のアプローチは
def headOrNone[A](list:List[Option[A]]) =
list match {
case Nil => None
case a::Nil => a
}
別のアプローチ
def headOrNone[A](list:List[Option[A]]) = list.headOption.getOrElse(None)
3 番目のアプローチ (headOption 実装のバリエーション)
def headOrNone[A](list:List[Option[A]]) = if (list.isEmpty) None else list.head
私は個人的には 3 番目のアプローチを好みます。この関数のより良い名前はありheadOrNone
ますか? また、それを書くための慣用的なスカラの方法は何ですか?