Это так называемый пароль .Это означает, что вы передаете функцию, которая должна возвращать Int
, но в основном используется для реализации отложенной оценки параметров.Это похоже на:
def myFunc(param: () => Int) = param
Вот пример.Рассмотрим функцию answer
, возвращающую некоторое значение Int
:
def answer = { println("answer"); 40 }
И две функции, одна из которых принимает Int
, а другая - Int
по имени :
def eagerEval(x: Int) = { println("eager"); x; }
def lazyEval(x: => Int) = { println("lazy"); x; }
Теперь выполните их оба, используя answer
:
eagerEval(answer + 2)
> answer
> eager
lazyEval(answer + 2)
> lazy
> answer
Первый случай очевиден: перед вызовом eagerEval()
answer
вычисляется и печатается строка "answer"
.Второй случай гораздо интереснее.На самом деле мы передаем функцию в lazyEval()
.lazyEval
сначала печатает "lazy"
и оценивает параметр x
(фактически вызывает функцию x
, переданную в качестве параметра).
См. Также