Я новичок в лямбда-выражениях, и мне трудно понять, как работает список параметров следующего лямбда-выражения.
Код является частью метода аутентификации facebook:
---------------- begin snippet ------------------
auto webAuthenticationOperation = WebAuthenticationBroker::AuthenticateAsync(WebAuthenticationOptions::Default, startURI, endURI);
webAuthenticationOperation->Completed = ref new AsyncOperationCompletedHandler<WebAuthenticationResult^>([output, facebookOutput, facebookToken](IAsyncOperation<WebAuthenticationResult^>^ thisOperation)
{
if (thisOperation->ErrorCode.Value == 0)
----------------some other stuff ---------------
В частности, я не знаю, как thisOperation на самом деле ссылается на WebAuthenticationResult, который в настоящее время обрабатывается.
Я читаю блок как:
1.) Запустить асинхронную аутентификацию
2.) Когда аутентификация будет завершена, запустите функцию, определенную лямбда
Но лямбда-функция должна знать об ЭТОЙ конкретной операции аутентификации (я предполагаю, что есть какой-то результат, который возвращается нам после его завершения). Исходя из списка параметров лямбды, похоже, что мы только что объявили указатель на результат веб-аутентификации, фактически не указывая его ни на что.
Как получается, что thisOperation в конечном итоге ссылается на правильный объект?