2013-04-09 4 views
0

저는 꽤 자바에 익숙해서 나와 함께 감당해야합니다. 일부 코드를 압축하려고 시도하고 & & 또는 ||를 사용하여 삼항 연산자를 작성하는 방법에 대해 궁금해하고있었습니다. 그렇다면 아래의 코드를 어떻게 단축형 삼항 연산자로 바꾸는 것이 좋을까요?논리적 연산자를 사용하는 Java 속기 삼항 연산자

if(homePage != null && currentParentPage.getPath().equals(homePage.getPath())){ 
    isParent = true; 
} 
+4

일반적으로 밀도가 아닌 가독성을 위해 최적화해야합니다. – yshavit

+0

일반적으로 부울에 할당 한 다음 부울을 테스트하면 명령문이 너무 길어서 읽을 수 없게되지 않을 수 있습니다. 그리고 삼중 항은 if/else보다 더 효율적으로 컴파일되지 않는다는 것을 명심하십시오. –

+0

^클라이언트 (예 : 자바 스크립트)로 전송할 코드를 작성하지 않는 한 참 true – 75inchpianist

답변

2

사실 삼항 연산을 사용하는 당신 '이

isParent = (homePage != null && currentParentPage.getPath().equals(homePage.getPath())) 
      ? true : isParent; 

이 이렇게 코드를해야 거라고

isParent = (homePage != null && currentParentPage.getPath().equals(homePage.getPath())) 
      ? true : false; 

isParent = (homePage != null && currentParentPage.getPath().equals(homePage.getPath())); 

또는

는 원래의 코드가 무엇을하지 않은 거짓 다리에 isParent을 수정합니다.

+0

감사합니다. @HotLicks 이것은 매우 유용합니다! –

1

3 진 연산자는 if-else 경우를 나타 내기위한 것입니다. 귀하의 케이스는 if 절만 보유하므로 필요하지 않습니다. 실패 할 경우 명시 적으로 isParent를 false로 설정하려면 1을 사용할 수 있습니다. 예를 들어

isParent = (homePage != null && 
    currentParentPage.getPath().equals(homePage.getPath())) ? true : false; 

이것은? true이면 첫 번째 값이 반환되고 (true) 그렇지 않으면 두 번째 값이 반환됩니다 (false).

아래 의견에 따르면 진정한 부울 할당에는 3 진을 사용할 필요가 없습니다. 이것은 단지 단순화 할 수 있습니다

isParent = (homePage != null && 
    currentParentPage.getPath().equals(homePage.getPath())); 
+4

'foo라고 쓰는 사람이 항상 있다면 항상 항상 그렇습니다. true : false'를 쓰면'foo' 만 쓰면됩니다. –

+0

고마워요 @ 75inchpianist 설명에 감사드립니다 –

1
(homePage != null && currentParentPage.getPath().equals(homePage.getPath())) 
     ? isParent = true 
     : isParent = false; 

내가 가장 간단한 방법으로이 작업을 수행하는 것이 좋습니다 것 - 대신 원으로 코드를 변환,

isParent = (homePage != null && currentParentPage.getPath().equals(homePage.getPath())); 
+1

하지만 둘 다 맞습니다. 그리고 성명서 안에 과제를 묻는 것은 일반적으로 형편없는 일입니다. –

+0

@HotLicks ... 당신은 그'''')'')가 누락 된 것을 지적 했 읍니다. –

+0

';'다음에 사용합니다. –