Skip to content

Scala:Either

둘 중 하나의 값을 가질 수 있는 타입이다.

Either 에 값 담기

Option을 Either 에 담는 방법을 예제로 사용한다.

def eitherTest(num: Option[Int]): Either[String, Int] = num match {
  case Some(n) => Right(n)
  case None => Left("Error! Number is missing!")
}

eitherTest(Some(7))
  • 인자로 제대로 된 값이 들어오면 Right 즉 Either 의 오른쪽에 담고,
  • 인자에 제대로 된 값이 안 들어오면 Left 즉 Either 의 왼쪽에 값을 담는다.

Either 값 사용하기

val res = eitherTest(Some(7))
if( res.isRight ) 
    println("Number is %s".format(res.right.get))
else if( res.isLeft) 
    println("Error message => %s".format(res.left.get))

위의 코드에서, eitherTest메소드를 호출해서 받는 값 resEither[String, Int] 타입인데 어느쪽에 제대로 된 값이 들어 있는 지 확인하기 위해서 res.isRightres.isLeft 를 사용한다.

패턴 매칭으로 사용하기

val result = eitherExample(Some(7)) match {
  case Right(num) => num
  case Left(err) => err
}

See also

Favorite site