콘텐츠로 이동

2023 03 29

2023-03-29

Scala Either

  • 개요
    • left type 이거나 right type 이거나 둘 중에 하나!
      • Left: 실패케이스
      • Right: 성공케이스
    • Computation이 성공할수도 실패할수도 있음
  • Use Case
    • Either는 에러/예외를 FP에서 핸들링하는 경우에 많이 사용됨
    • 그냥 예외 던지거나, null 반환하기 보다, Either를 반환하는게 낫다
      • successful result || error
    • 이렇게 하면 에러 핸들링이 조금 더 명료하고 쉬워질 수 있음
    • 주로 FP 합성을 활용해 Option, Try와 함께 많이 씀
  • 예시
    def divide(x: Int, y: Int): Either[String, Int] = {
        if (y == 0) {
            Left("Cannot divide by zero")
        } else {
            Right (x / y)
        }
    }
    
    val result1 = divide(10, 2)
    val result2 = divide(10, 0)
    
  • vs Option
    • Option: presence, absence에 대한 판별
    • Either: success, failure에 대한 판별
    • Option이 None 케이스에 대해 핸들링 하는 것 까먹으면 NPE 터져