스칼라에서 나는 Array[Option[(String,String,Try[String])]]
을 가지며 모든 오류 오류 코드를 찾고 싶습니다.중첩 된 스칼라 필터 Option/Try 모나드
for {
Some(row) <- row
(a,b,c) = row
x <- c
} yield x
을하지만 내부 모나드가 실패 인 경우, 그때 나는 사투를 벌인거야 :
내부 모나드가 대신 Option[String]
경우, 정말 같은 이해를 위해 깨끗한 작은으로 Some(x)
내용에 액세스 할 수 있습니다 for 문에 Failure(x) <- c
을 넣을 수 없으므로 패턴 일치 방법을 살펴보아야합니다. 이것은 내가 누락 된 정말 간단한 것 같지만, 어떤 지침도 매우 가치있을 것입니다.
감사합니다.
EDIT - 배열을 잘못 지정했습니다. 실제로는 tuple3s뿐만 아니라 option-tuple3s의 배열입니다.
감사합니다. 그게 바로 이해와 일치 프로토콜을 overthinking하여 놓친 간단한 대답이야. 옵션을 제거하기 위해 처음에는 flatMap을 추가해야했습니다 (편집 참조). – buggaby
아아 ... 편집을 보지 못했습니다 ... a.flatMap (x => x.map (_._ 3)). filter (_. isFailure)'와 같은 일을해야만합니까? – mfirry
정확합니다. 방금 옵션 부분을 제거해야했습니다. 모나드로이 작업을 수행하는 더 좋은 방법이있을 것이라고 생각합니다. 그러나 작동 중이고 전체 솔루션을 재 작업하여 조금 깔끔하게 만들지 않으려 고합니다. – buggaby