предоставляет функцию в качестве ленивого аргумента
Поскольку fork
функция имеет ленивый аргумент a: => Par[A]
, это означает, что a
не будет вычисляться при fork(a)
до тех пор, покаотправлено на ExecutorService
с Callable
, так как тип ответа a
также Par[A]
, он также будет асинхронно вычисляться снова и также может рекурсивно fork выполняться с тем же ExecutorService.
Так что для моего понимания, fork
с ленивым аргументом a: => Par[A]
, он будет иметь возможность параллельных и рекурсивных форка задач.
In Scala , Ленивая функция : это означает Ленивая оценка до вызова этой функции.для вашего примера, вы объявляете ленивую функцию a: => Par[A]
, поэтому, когда вы вызываете fork
метод, подобный: fork(myFunction())
, это не будет оценивать myFunction
сразу, оно будет только тогда, когда a(es).get
выполнено.
Пример:
def fun(a: => Int): Int = {
println("second run")
a
}
def fun2(): Int = {
println("first run")
1 + 1
}
fun(fun2())
вышеприведенный код будет выводиться как:
второй запуск
первый запуск
с момента отправки fun2()
как lazy function
не будет оцениваться по fun(fun2())
, и будет оцениваться по методу fun
.