스칼라에서 List
(선택 사항 : Option
)을 사용하고 있습니다. 예를 들어, 에서 for
의 이해력을 사용하고 수익률이 Option
인 경우 발생합니다. 제 경우에는 JSON 객체를 처리하고 필드 목록 (List[JField]
)에서 for
을 사용합니다.0 또는 1 옵션으로 목록을 여는 가장 좋은 방법은 무엇입니까?
목록을 열어 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)
세 번째 접근합니다 (headOption 구현의 변형)
def headOrNone[A](list:List[Option[A]]) = if (list.isEmpty) None else list.head
될 것이다. headOrNone
보다이 함수에 더 좋은 이름이 있습니까? 쓰는 관용적 인 스칼라 방법은 무엇입니까?
세 번째 옵션은 headOption 구현의 변형이므로 가장 효율적으로 보입니다. 왜 둘째를 좋아하니? –
@ 마리우스, 내 업데이트를 참조하십시오. – dhg
좋은 flatten.headOption, Out에서 다시 Option으로 :) 코드를 다시 작성하려고합니다. –