2012-02-07 3 views
2

저는 람다에 익숙하지 않아 다음 람다 식의 매개 변수 목록이 어떻게 작동하는지 이해하기가 어려워요.C++/CX에서 람다 파라미터 참조하기

---------------- 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) 상기 인증이 완료되면, 람다


그러나 의해 정의 된 함수를 실행를 시작으로

가 I 블록을 읽어 람다 함수는이 특정 인증 연산에 대해 알아야합니다. (필자는 완성되었을 때 어떤 종류의 결과가 있다고 가정합니다.) 람다의 매개 변수 목록을 기반으로, 실제로 아무 것도 가리 키지 않고 웹 인증 결과에 대한 포인터를 선언 한 것처럼 보입니다.

어떻게 thisOperation이 올바른 개체를 참조하게됩니까?

+0

C++/CLI와 C++/CX는 서로 다른 언어이지만 동일한 구문을 많이 사용합니다. C++/CLI는 CLI를 대상으로하며 가비지 수집 객체 모델을 사용합니다. C++/CX는 Windows 런타임을 대상으로하고 참조 카운팅 된 COM 기반 개체 모델을 사용합니다. –

답변

2

thisOperation은 람다 매개 변수입니다. 이 값은 호출 될 때 람다 식에 대한 인수로 제공됩니다.

webAuthenticationOperation 이벤트가 발생하면 webAuthenticationOperation의 결과를 인수로 사용하여 람다식이 호출됩니다.

+0

감사! 또한 Async 사용 패턴에 익숙하지 않아 혼란 스러웠다 고 덧붙여 야합니다. 1)는 비동기 작업 2) 람다 기능 3에에 완성 핸들러를 설정) 비동기 작업을 시작 만들기 : 분명히 협약은 이동하는 것입니다 – nciao