문제

Ternary Operator가 일반 if/else 블록과 어떻게 작동하는지 보여주십시오. 예시:

Boolean isValueBig = value > 100 ? true : false;

정확한 복제 : Ternary Operator를 어떻게 사용합니까?

도움이 되었습니까?

해결책

Boolean isValueBig = ( value > 100  ) ? true : false;


Boolean isValueBig;

if(  value > 100 ) { 
      isValueBig = true;
} else { 
     isValueBig = false;
}

다른 팁

3 원조와 IF/다른 경우의 차이점은 3 원 표현이 값으로 평가하는 진술이지만 IF/Else는 그렇지 않다는 것입니다.

예제를 사용하려면 3 배 표현식 사용에서 if/else로 변경하십시오.이 문장을 사용할 수 있습니다.

Boolean isValueBig = null;
if(value > 100)
{ 
    isValueBig = true 
}
else
{
    isValueBig = false;
}

그러나이 경우 귀하의 진술은 다음과 같습니다.

Boolean isValueBig = (value > 100);

C ++를 처음 접했을 때이 구성을 다음과 같이 읽는 데 도움이된다는 것을 알았습니다.

Boolean isValueBig = if condition ? then x else: y;

(이것은 유효한 코드가 아니라는 점에 주목하십시오. 그것은 내가 머리 속에서 읽도록 훈련 한 것입니다.)

Boolean isValueBig;

if (value > 100)
{
   isValueBig = true;
}
else 
{
   isValueBig = false;
}
Boolean isValueBig;

if(value > 100) { isValueBig = true; } else { isValueBig = false; }

나는 그것이 읽기가 어렵다고 생각했기 때문에 Ternary Operator의 팬이 아니 었습니다. 그렇게되면 Jon Skeet과 그의 책, C# 깊이 마침내이 오래된 개를 머리 위로 치고 가라 앉게했습니다. 존은 말했다.

값> 100?

"예 아니오"

이제 맹인이 볼 수 있습니다.

이것이 당신이 그것을 두 번째 자연으로 만드는 데 도움이되기를 바랍니다.

인용 된대로 ? : 운영자 MSDN 페이지, "조건부 연산자 (? :)는 부울 표현식의 값에 따라 두 값 중 하나를 반환합니다."

따라서 3 원 운영자를 사용하여 부울 이상의 것을 반환 할 수 있습니다.

   string result = (value > 100 ) ? "value is big" : "value is small";

PHP 예

<?php

  // Example usage for: Ternary Operator
  $action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

  // The above is identical to this if/else statement
  if (empty($_POST['action'])) {
    $action = 'default';
  } else {
    $action = $_POST['action'];
  }

?>

"표현식 (expr1)? (Expr2) : (Expr3) 평가합니다 expr2 만약에 expr1 평가합니다 진실, 그리고 expr3 만약에 expr1 평가합니다 거짓."

비교 연산자에 대한 PHP 문서

Java의 True/False 부품의 유형을 혼합하지 않도록하십시오. 이상한 결과를 낳습니다 :-(

나쁜 예, 쉽게 글을 쓸 수 있기 때문입니다

Boolean isValueBig = value > 100 ? true : false;

처럼:

bool isValueBig = value > 100

그 외에도 다른 모든 사람들은 이미 대답했습니다. 평가중인 것은 이미 부울 값이기 때문에 3 원 운영자를 사용하여 BOOL 값을 설정하는 것이 좋습니다.

나는 그것이 단지 예일 뿐이라는 것을 알고 있지만, 지적 할 가치가있었습니다.

다른 사람들은 이미 대답했지만 여기에 Ternary의 사용에 대해 정말로 알아야 할 사항이 있습니다.

어떤 값의 가능한 변형에 대해 다른 객체를 반환 해야하는 코드 조각이 있다고 가정하자. Simpliticy의 사케 1과 5 사이의 정수를 위해 코드는 다음과 같이 보인다.

if(i==1) {
    return new ObjectOne();
} else if(i==2) {
    return new ObjectTwo();
} else if(i==3) {
    return new ObjectThree();
} else if(i==4) {
    return new ObjectFour();
} else if(i==5) {
    return new ObjectFive();
} else {
    return new DefaultObject();
}

이해하기 쉽지만 조금 무겁습니다. 부터 3 대는 If..ELSE 진술을 작성하는 또 다른 방법입니다. 이것에 다시 활성화 될 수 있습니다

return (i==1) ? new ObjectOne() :
       (i==2) ? new ObjectTwo() :
       (i==3) ? new ObjectThree() :
       (i==4) ? new ObjectFour() :
       (i==5) ? new ObjectFive() : new DefaultObject();

라고 불린다 중첩 된 3 개. 그것은 사악합니다. 이제 당신은 그것에 대해 알았으므로 절대 사용하지 마십시오. 위의 사례와 같은 용도가있는 것처럼 보이지만 실제 상황에서는 가독성을 잃는 곳 어딘가에 사용해야 할 가능성이 매우 높습니다 (가변 양의 매개 변수 등의 구성을 변경한다고 생각).

보너스 섹터 : if () 내부에 속성 값을 설정하지 마십시오. if(bool=true!=false) { .. }

MSDN에서 인용 한 바와 같이 (이전 게시물에 언급)

문자열 결과 = (값> 100)? "가치는 크다": "가치는 작다";

다음과 같이 읽을 수 있습니다.

값은 100보다 큰가요? 그렇다면 문자열 결과는 "값이 큽니다", 아니오 인 경우 문자열 결과는 "값이 작습니다"입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top