3 진 (조건부) 연산자는 값을 반환합니다. 귀하의 방법이 그렇지 않다면, 그들은 가치를 취하는 운영자의 일부로서 사용될 수 없습니다.
더 잘 이해하기 위해 간단한 이진 연산자 인 +
을 생각해 봅시다. 이 방법으로 작동합니다 :
<eval1> + <eval2> --> <value>
2 개의 평가 가능한 부품이 필요하며 다른 부품을 반환합니다. 당신이
doThis() + doThat();
또는
gimmeAValue = doThis() + doThat();
는 실패를 입력 한 경우 doThis()
도 doThat()
도 아무것도으로 평가로 (그들은 "반환"void
). 물론 <eval1>
과 <eval2>
은 모두 +
연산자가 처리하고 어떤 유형의 값을 반환 할 수 있도록 일부 "호환"유형이어야합니다.
이제 삼항 연산자를 살펴 보자 :
는
<evalBoolean> ? <eval1> : <eval2> --> <value>
은 3 개 평가가 부품을 소요하고 값을 반환합니다.
첫 번째 평가할 수있는 부분은 컴파일러가 부울로 이해할 수 있어야합니다 (캐스팅 가능). 다른 2 개의 평가 가능한 부품 중 어느 것이 반환되어야하는지 결정하는 데 사용됩니다.
다른 두 개의 평가 가능한 부품은 반드시 ... 평가 가능해야합니다. 무언가에. 어떤 타입의.
즉, 삼항 조건부 연산자는 코드 분기가 아닌 무언가를 반환하기위한 것입니다. 다음과 같이 사용 :
아니요. 정상적인 사람처럼'if'를 사용하십시오. –
삼항 연산자는 조건 검사와 함께 유형의 인스턴스에 값을 할당한다고 가정합니다. 당신이 그것을 제안하는 방식은 형식을 만족시키지 못합니다. –
@codeparkle - 많은 공간이 아닙니다. if (condition) {doThis();} else {doThat();} – tehdoommarine