내가 가지고있는 것은 List[Validated[NonEmptyList[ErrorType], T]]
입니다 고양이를 평평하게하고 나는 나의 빈약 한 시도가 모든 오류를 수집하고 새로운 하나를 만들 수있는 Validated[NonEmptyList[ErrorType], T]
축소는/cats.Validated
에이 평평하고 싶습니다.
val errors = validations collect {
case Invalid(errs) => errs.toList
}
if (errors.nonEmpty) Invalid(NonEmptyList.fromListUnsafe(errors.flatten)) else Valid(t)
나는 foldMap
및 traverse
을 시도했지만 나는 범위에서 Monoid
이없는 문제로 실행 invarialby, 나는 아마 하나 라이너 상자 밖으로이 제공 고양이 같은 느낌.
older answers on this kind of question 중 일부는 오래된 것 (또는 적어도 내가 말하는 기능을 찾을 수 없음) 인 것 같습니다.
업데이트 :
수정했습니다.
'cats._; cats.implicits._'가 범위에 있습니까? –
'cats.implicits._' 예.하지만 평평하게하려면 어떻게해야합니까? – monkjack
예제에서 변수't'의 유형을 명확히 할 수 있습니까? 그것은 단일 값입니까 ('Option [T]'와 같은 것입니까?)? 그것은 값의'Seq [T]'입니까? 후자의 경우'T' 형의 값을 돌려주고 싶습니까? 다른 것입니까? – SergGr