Slide 17
Slide 17 text
2019/4/19 PlayFramework
戻り値の型どうするのか問題
127.0.0.1:8080/PlayScalaResult/#1 17/25
例えばこんな感じ?
case class MyResult[+E, +R](result: Future[Either[E, R]]) {
def map[RR](f: R => RR): MyResult[E, RR] = MyResult(result.map(_.map(f)))
def flatMap[LL >: L, RR](f: R => MyResult[E, RR]): MyResult[E, RR] = MyResult {
result flatMap {
case Right(r) => f(r).result
case Left(err) => Future.successful(Left(err))
}
}
}
17 / 25