짧은 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
'Development Tip' 카테고리의 다른 글
Firebug가 toFixed ()가 함수가 아니라고 말하는 이유는 무엇입니까? (0) | 2020.10.08 |
---|---|
하나의 명령으로 Dockerfile 빌드 및 실행 (0) | 2020.10.08 |
JSON을 ArrayList로 역 직렬화 (0) | 2020.10.08 |
Slack 팀 ID와 채널 ID를 찾는 가장 간단한 방법은 무엇입니까? (0) | 2020.10.08 |
virtualenv에 이전 버전의 Django를 어떻게 설치하나요? (0) | 2020.10.07 |