私はラムダに不慣れで、次のラムダ式のパラメーターリストがどのように機能するかを理解するのに苦労しています。
このコードは、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.)認証が完了したら、ラムダによって定義された関数を実行します
ただし、ラムダ関数はこの特定の認証操作について知る必要があります(完了時に返される何らかの結果があると想定しています)。ラムダのパラメータリストに基づくと、実際には何もポイントせずに、Web認証結果へのポインタを宣言したように見えます。
thisOperationが正しいオブジェクトを参照するようになるのはどうしてですか?