Ответ 1
-
action
- это функция pass-by-name, которая принимаетString
и возвращаетString
. -
action
- это переданная по имени функция, которая не принимает ничего, чтобы вернуть функцию, которая принимаетString
и возвращаетString
Теперь вы можете спросить: "Ну, что это значит, что параметр передается по имени?" Хорошо... это совсем другая червь из червей. В принципе, передаваемый по имени параметр оценивается только тогда, когда он используется в функции, и каждый раз, когда он используется в функции. То, что это позволяет, является чем-то вроде короткого замыкания, как следует
def orOperator(left: Boolean, right: => Boolean) : Boolean = if (left) true else right
В этом случае оператор будет замыкаться (и заканчивать без вычисления/оценки right
), если он найдет left
как истину.
Итак... у вас с этими параметрами что-то похожее. Это функции, которые не оцениваются по какой-либо причине, если/пока они не будут указаны в теле функции. Я не понимаю мотивацию для этого, но... как это. Надеюсь, что это поможет.