Programing

Stroustrup의 예에서 콜론은“return 1 : 2”에서 무엇을 의미합니까?

lottogame 2020. 6. 1. 07:37
반응형

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;대신 더 비슷할 것입니다.

참고 URL : https://stackoverflow.com/questions/55929336/in-stroustrups-example-what-does-the-colon-mean-in-return-1-2

반응형