반응형
Stroustrup의 예에서 콜론은“return 1 : 2”에서 무엇을 의미합니까?
콜론의 특정 용도를 이해하지 못합니다.
이 책 은 Bjarne Stroustrup 의 C ++ 프로그래밍 언어 , 제 4 판, 11.4.4 "Call and Return"섹션, 297 페이지에서 찾아 볼 수 있습니다.
void g(double y)
{
[&]{ f(y); } // return type is void
auto z1 = [=](int x){ return x+y; } // return type is double
auto z2 = [=,y]{ if (y) return 1; else return 2; } // error: body too complicated
// for return type deduction
auto z3 =[y]() { return 1 : 2; } // return type is int
auto z4 = [=,y]()−>int { if (y) return 1; else return 2; } // OK: explicit return type
}
혼란스러운 콜론은 7 번 줄에 나타납니다 return 1 : 2
. 나는 그것이 무엇인지 모릅니다. 레이블 또는 삼항 연산자가 아닙니다.
첫 번째 멤버가없는 (및없는 ?
) 조건부 삼항 연산자처럼 보이지만 그 경우 조건없이 작동하는 방법을 이해하지 못합니다.
오타입니다. C ++ Programming Language의 두 번째 및 세 번째 인쇄는 에라타를 보십시오 . 예는 다음과 같아야합니다.
auto z3 =[y]() { return (y) ? 1 : 2; }
간단한 오타처럼 보입니다. 아마도 :
auto z3 =[y]() { return y ? 1 : 2; }
람다는 매개 변수를 사용하지 않으므로 파렌은 선택 사항입니다. 원하는 경우이를 대신 사용할 수 있습니다.
auto z3 =[y] { return y ? 1 : 2; }
return 1 : 2;
구문 오류이며 유효한 코드가 아닙니다.
올바른 진술은 return (y) ? 1 : 2;
대신 더 비슷할 것입니다.
반응형
'Programing' 카테고리의 다른 글
mongodb에 날짜 / 시간을 저장하는 가장 좋은 방법 (0) | 2020.06.01 |
---|---|
기다리다 Task.Wait-교착 상태? (0) | 2020.06.01 |
Android Studio의 IML 파일이란 무엇입니까? (0) | 2020.06.01 |
액세스 제한 : 'Application'유형이 API가 아님 (필수 라이브러리 rt.jar에 대한 제한) (0) | 2020.05.31 |
Objective-C에서 nil과 NULL을 언제 사용해야합니까? (0) | 2020.05.31 |