-
scala 에서 retry 구현하기scala/basic 2021. 11. 25. 18:11
문제
cats-effect 나 zio 등의 functional library 를 사용하면, 이미 구현되어 있는 retry 를 쉽게 사용할 수 있다. 혹은 retry library 를 활용할 수도 있다. 간단하게 쓸수 있도록 scala 표준 라이브러리만을 사용해 retry 를 구현해 보자. stackoverflow 를 참고할 수 있다.
코드
import scala.annotation.tailrec import scala.util.{Failure, Success, Try} object Util { @tailrec def retry[T](n: Int)(f: => T): Try[T] = if (n < 0) { Failure(new Exception(s"$n must be greater or equal to 0")) } else if (n == 0) { Try(f) } else { Try(f) match { case Success(value) => Success(value) case Failure(_) => if (n == 1) Try(f) else retry(n - 1)(f) } } }
'scala > basic' 카테고리의 다른 글
java callback 을 scala Future 로 바꾸기 (0) 2022.07.16 sealed trait typeclass (0) 2022.03.29 scala enumeratum enum 사용하기 (0) 2021.11.13 Variance 문제 (3) 2021.10.22 apache poi 를 사용해 scala 에서 Excel 파일 읽기 (0) 2021.10.14