Link Search Menu Expand Document

OptionT[F[_], A]는 F[Option[A]]의 경량 포장입니다.

Option Future 등 유형에 배치된 처리 시 OptionT를 사용하면 코드를 더욱 쉽게 정리할 수 있다.

val greetingFO: Future[Option[String]] = Future.successful(Some("Hello"))

val firstnameF: Future[String] = Future.successful("Jane")

val lastnameO: Option[String] = Some("Doe")

val ot: OptionT[Future, String] = for {
  g <- OptionT(greetingFO)
  f <- OptionT.liftF(firstnameF)
  l <- OptionT.fromOption[Future](lastnameO)
} yield s"$g $f $l"

val result: Future[Option[String]] = ot.value 

// 결과 Future(Some("Hello Jane Doe"))

참고링크