Scala にはList、オプションの がありますOption。これは、たとえば、でfor内包表記を使用しList、yield が を返す場合に発生しますOption。私の場合、JSON オブジェクトを処理し、forフィールドのリスト ( List[JField]) で内包表記を使用していました。
リストを開いて と にマップする最良の方法は何List()ですか?NoneList(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ますか? また、それを書くための慣用的なスカラの方法は何ですか?