[SCALA] X의 컬렉션에 옵션 [X]의 스칼라 수집을 변환하는 방법
SCALAX의 컬렉션에 옵션 [X]의 스칼라 수집을 변환하는 방법
나는 스칼라을 탐험 시작하고, 나는에 관심있어 것들 중 하나는 옵션 유형 및 널 (null) 관련 오류를 제거 할 수있는 약속입니다.
그러나 내가 문자열의 집합으로, 옵션, 말의 목록 (또는 다른 컬렉션) [문자열] 변환하는 방법을 작동 할 수 없었다 (분명히 아무도없는 모든 값을 필터링).
즉, 어떻게이에서받을 수 있나요 :
List[Option[Int]] = List(Some(1))
... 이에:
List[Int] = List(1)
그 대답에 어떤 영향이 있는지 나는 스칼라 2.8을 사용하고 있습니다.
해결법
-
==============================
1.
val list1 = List(Some(1), None, Some(2)) val list2 = list1.flatten // will be: List(1,2)
-
==============================
2.교육 목적을 위해, 당신은 몇 가지 대안을 좋아 있습니다
교육 목적을 위해, 당신은 몇 가지 대안을 좋아 있습니다
scala> val list1 = List(Some(1), None, Some(2)) list1: List[Option[Int]] = List(Some(1), None, Some(2)) scala> list1 flatten res0: List[Int] = List(1, 2) // Expanded to show the implicit parameter scala> list1.flatten(Option.option2Iterable) res1: List[Int] = List(1, 2) scala> list1 flatMap (x => x) res2: List[Int] = List(1, 2) scala> list1 flatMap Option.option2Iterable res3: List[Int] = List(1, 2) // collect is a simultaneous map + filter scala> list1 collect { case Some(x) => x } res4: List[Int] = List(1, 2)
Scalaz으로, 당신은 그 반환 옵션 [목록 [지능]을 순서라는 약간 다른 작업을 수행 할 수 있습니다.
scala> import scalaz._; import Scalaz._ import scalaz._ import Scalaz._ scala> val list1: List[Option[Int]] = List(Some(1), None, Some(2)) list1: List[Option[Int]] = List(Some(1), None, Some(2)) scala> list1.sequence res1: Option[List[Int]] = None scala> val list2: List[Option[Int]] = List(Some(1), Some(2)) list2: List[Option[Int]] = List(Some(1), Some(2)) scala> list2.sequence res2: Option[List[Int]] = Some(List(1, 2))
from https://stackoverflow.com/questions/4730842/how-to-transform-scala-collection-of-optionx-to-collection-of-x by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 분할 마루 파일에서 읽기 DataFrame (0) | 2019.11.19 |
---|---|
[SCALA] 스칼라 글로벌 대 Play의 실행 컨텍스트 (0) | 2019.11.19 |
[SCALA] 아파치 Buildr / 메이븐 2 REPO 이름을 어떻게 찾을 수 있습니까 (0) | 2019.11.19 |
[SCALA] S3A가 매우 느립니다 동안 불꽃을 사용하여 S3에 마루 파일을 작성합니다 (0) | 2019.11.19 |
[SCALA] 스칼라에서, 왜 부분적으로 명시 적으로 인수 유형을 지정하지 않고 기능을 적용 할 수 없습니다? (0) | 2019.11.19 |