Development Tip

짧은 IF-ELSE 문

yourdevel 2020. 10. 8. 19:05
반응형

짧은 IF-ELSE 문


내 코드를 더 읽기 쉽게 만들려고해서 짧은 IF 문을 사용하기로 결정했습니다.

다음은 작동하지 않는 코드입니다 ( "문이 아닙니다").

jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);

이것에 무슨 문제가 있습니까? 대괄호가 필요하십니까? 어디?


"삼항 표현식" x ? y : z은 조건부 할당 에만 사용할 수 있습니다 . 즉, 다음과 같이 할 수 있습니다.

String mood = inProfit() ? "happy" : "sad";

삼항 표현식이 ( String이 예 에서는 유형의) 무언가를 반환하기 때문 입니다.

실제로 짧은 인라인으로 사용되는 것은 아닙니다 if-else. 특히 개별 부품이 값을 반환하지 않거나 호환되지 않는 유형의 값을 반환하는 경우 사용할 수 없습니다. (따라서 두 메서드가 동일한 값을 반환하는 경우이 작업을 수행 할 수 있지만 부작용 목적으로 만 호출 해서는 안됩니다 .)

따라서이를 수행하는 적절한 방법은 if-else 블록을 사용하는 것입니다.

if (jXPanel6.isVisible()) {
    jXPanel6.setVisible(true);
}
else {
    jXPanel6.setVisible(false);
}

물론 단축 할 수 있습니다

jXPanel6.setVisible(jXPanel6.isVisible());

후자의 표현은 모두 당신이하려는 일을 더 명확하게 전달한다는 점에서 더 읽기 쉽습니다. (그나저나, 당신은 당신의 조건을 잘못 이해 했습니까? 이것은 토글이 아니라 아무 작동도하지 않는 것처럼 보입니다).

가독성낮은 문자 수혼동 하지 마십시오 . 요점은 가장 쉽게 이해할 수있는 것입니다. 그리고 약간의 언어 기능을 오용하는 것은 독자를 혼란스럽게하거나 적어도 정신적 인 이중 작업을하게 만드는 확실한 방법입니다.


jXPanel6.setVisible(jXPanel6.isVisible());

또는 귀하의 양식 :

jXPanel6.setVisible(jXPanel6.isVisible()?true:false);

삼항 연산자는 할당의 오른쪽 만 될 수 있으며 자체 문이 될 수 없습니다.

http://www.devdaily.com/java/edu/pj/pj010018/


다른 사람들이 지적했듯이

x ? y : z

(완전한) 진술이 아니라 표현식입니다. 할당의 오른쪽이나 함수에 대한 매개 변수 등과 같이 어딘가에서 사용해야하는 rvalue입니다.

아마도 당신은 이것을 볼 수있을 것입니다 : http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html


나는 파티에 조금 늦었지만 미래의 독자를 위해.

내가 알 수 있듯이 가시성 상태를 바로 전환하고 싶습니까? !연산자를 사용하지 않는 이유는 무엇 입니까?

jxPanel6.setVisible(!jxPanel6.isVisible);

if 문은 아니지만 예제와 관련된 코드에이 방법을 선호합니다.

참고 URL : https://stackoverflow.com/questions/4461996/short-if-else-statement

반응형