Прежде всего, руководство пользователя для моего ответа: я буду использовать курсивом, чтобы указать функцию, которая используется без явного имени (см. anonymous functions).
IsAuthenticated - это метод, который принимает в качестве параметра аргумент f.
F является функцией, которая принимает Y в качестве параметра и производит экземпляр результата
У это функция, которая принимает Z в качестве параметра и производит экземпляр запроса [AnyContent]
Z является функцией, которая не принимает никаких параметров и возвращает строку
IsAuthenticated называет Security.Authentic ated, передача имени пользователя и onUnauthorized (функция вызова, когда пользователь не имеет права выполнять запрошенное действие).
Я не совсем уверен, что происходит на прошлом здесь myself- я не совсем хорошо, что с Scala yet- но мое предположение что Security.Authenticated случай класса, а следующее эквивалентно подклассов его и добавив конструктор в Java:
{
Action(request => f(user)(request))
}
Если что большая часть моего предположения правильны, то действие (которое является метод на Security.Authenticated) вызывается, передавая в качестве аргумента .
A - это функция, которая принимает объект Request (я угадываю это имя класса) и производит результат. Использование результата подразумевается здесь, потому что реализация A является вызовом f.
Поэтому, когда подкласс Security.Authenticated инициируется, вызывается действие, которое аутентифицирует пользователя для какого-либо действия (указано как String), а затем, если пользователь аутентифицирован, возвращает f (исходный параметр), который предположительно вызванный действием (после вышеупомянутой аутентификации). Этот вызов f возвращает результат, который также является функцией. Затем результат окончательно вызывается с запросом (который был передан в A) в качестве параметра.
Есть ли способ представить это с помощью синтаксиса java, я знаю, что это не то же самое, но может помочь мне понять подпись метода. Мне тяжело работать с порядком операций здесь. – chiappone