В курсе Курса функционального реактивного программирования Неделя 3 Лекция 4 Эрик Мейер реализует функцию повтора для Будущего, которая будет повторять вычисление определенное количество раз. Он определяет block
как параметр call_by_name, так как будущее должно оцениваться при каждой попытке и не только один раз.Должен ли быть вызван параметр callbyname в фигурных скобках при вызове funciton?
def retry(noTimes: Int)(block: =>Future[T]): Future[T] = {
if (noTimes == 0) {
Future.failed(new Exception(“Sorry”))
} else {
block fallbackTo {
retry(noTimes–1) { block }
}
}
}
Мой вопрос: Так как block
уже call_by_name параметр, это необходимо, чтобы обернуть его в блок на назвав его, или это просто для удобства понимания?
retry(noTimes–1) { block }
//same as?
retry(noTimes–1)(block)
Тот же вопрос с fallbackTo
def fallbackTo(that: =>Future[T]): Future[T] = {
this recoverWith {
case _ => that recoverWith { case _ ⇒ this }
}
fallbackTo { retry(noTimes–1) { block } }
//same as?
fallbackTo (retry(noTimes–1)(block))