2011-03-04 3 views
1

나는 코드삼항 연산자를 사용하여이 코드를 어떻게 단축 할 수 있습니까?

public class direction do(direction) 
    if(istrue) { 
     left = do(left); 
    } else { 
     right = do(right); 
    } 
} 

이 단축 어쨌든이 있다면 궁금 해서요의 다음과 같은 부분이있다. 삼항 연산자를 사용해 보았지만 약간의 어려움이있었습니다. 제안?

+7

이미 충분히 짧지 않습니까? 또한 이것은 유효한 Java 코드와 같지 않습니다. – MAK

+0

메소드 행에 대괄호가 없습니다. 이것이 do while loop일까요? – Jim

+3

함수 이름으로'do'를 사용할 수 있습니까? 그리고'direction','left','right'는 어디에 정의되어 있습니까? 전체 예제를 "단순화"하는 대신 게시하는 것이 좋습니다. – mellamokb

답변

2

팀의 다른 프로그래머가 마음에 들지 않으면 삼항 식을 사용할 수 있습니다. 귀하의 예제가 유효 자바에 있었다 그래서 경우 :

public void Do(Direction direction) 
{ 
    if (istrue) 
     left = Do(left); 
    else 
     right = Do(right); 
} 

을 또는 심지어 하나의 라이너 수 : :

public void Do(Direction direction) 
{ 
    (istrue)? left = Do(left) : right = Do(right); 
} 

당신은 if에 괄호를 생략 할 수있는 모든 위

public void Do(Direction d) { (istrue)? left = Do(left) : right = Do(right); } 

을 명확하고 너무 똑똑하지 않은 스타일을 선택하십시오. 코드를 읽고 이해하기 쉽게하려면 줄을 더 많이 사용하십시오.

당신의 예에서
public String getFirstName()  { return first_name; } 
public String getLastName()   { return last_name; } 
public String getAddress1()   { return address1; } 
public String getAddress2()   { return address2; } 
public String getCity()    { return city; } 
public String getState()   { return state; } 
public String getZip()    { return zip; } 
4

이있다 : 어떤 경우에 그들은 (나에게) 이해하지만

한 - 라이너는 일반적으로 매우 유사 작은 방법 중 가족이 특히 매우 읽을 수 없습니다 삼항 연산자에 대한 합리적인 사용.

자바 (다른 C 언어와 같은)의 삼원 연산자의 값은 if 문이 문 동안 삼원 조작 식, 식 점이다. 표현식은 값을 산출하지만 명령문은 값을 산출하지 않습니다. 삼항 연산자 표현의 결과 값을 사용하지 않는 경우 삼항 연산자를 사용하는 업체는 없습니다. 그냥하지 마. 관심을

, 여기에 삼항 연산자의 올바른 사용의 예 :

int max(int x, int y) { 
    return x > y? x : y; 
} 
0

귀하의 코드가이 상태에 따라 두 가지 변수 (left 또는 right)에 할당해야합니다. 3 진 표현은 과제의 왼쪽에서 사용할 수 없으므로 그렇게하는 데 도움이되지 않습니다.

그러면 (2 개의) 할당의 RHS가 해제됩니다. 이론적으로 삼항 식을 사용할 수는 있지만 코드를 길게 만들 것입니다.

짧은 대답은 3 진 연산자가 도움이되지 않는다는 것입니다.

관련 문제