2

私はラムダに不慣れで、次のラムダ式のパラメーターリストがどのように機能するかを理解するのに苦労しています。

このコードは、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が正しいオブジェクトを参照するようになるのはどうしてですか?

4

1 に答える 1

2

thisOperationラムダパラメータです。その値は、呼び出されたときにラムダ式への引数として提供されます。

webAuthenticationOperation'イベントが発生するCompletedと、ラムダ式が呼び出され、その結果がwebAuthenticationOperation引数になります。

于 2012-02-07T06:13:31.577 に答える