0
이것은 이전의 question에 대한 후속 조치입니다. 나는 다음과 같은 기능을 가지고 가정 :스칼라에서 둘 중 하나를 사용하여 오류 처리
type Result[A] = Either[String, A] // left is an error message
def f1(a: A): Result[B] = ...
def f2(b: B): Result[C] = ...
def f3(c: C): Result[D] = ...
def f(a: A): Result[D] = for {
b <- f1(a).right
c <- f2(b).right
d <- f3(c).right
} yield d;
또한 내가 오류 메시지에 더 정보를 추가 할 가정하자.
def f(a: A): Result[D] = for {
b <- { val r = f1(a); r.left.map(_ + s"failed with $a"); r.right }
c <- { val r = f2(b); r.left.map(_ + s"failed with $a and $b"); r.right }
d <- { val r = f3(c); r.left.map(_ + s"failed with $a, $b, and $c"); r.right }
} yield d;
코드가 불투명합니다. 코드를 어떻게 개선 할 것을 제안 하시겠습니까?
왜 그냥'F1의 (a) .left.map (_ + s는 "$ a를 실패했습니다") right'? –
감사. 당신 말이 맞아요. – Michael
함수 f1, f2, f3의 오류 메시지에 인수를 추가하지 않는 이유가 있습니까? – lea