2010-02-26 2 views

답변

2

a가 a보다 작거나 같거나 b보다 큰지 여부에 따라 함수가 3 개의 다른 값을 반환하면됩니다. 이 수행 그루비의 연산자는 이미 있습니다 :

a <=> b 

반환 값 -1, 0과 1은 아마도 할 수있는 가장 좋은 방법은이 경우, 대신 xMethod의 연산자를 사용하는 코드를 리팩토링이다 가능한.

정확한 값 1, 2 및 3이 중요하고 3 개의 고유 한 값이 아니라면이 작업을 수행 할 수 없습니다.

+0

@Mark Byers - 좋아, 반환 값을 -1, 0, 1로 변경하면 내 방법은 어떻게 생깁니 까? 많은 감사 –

+0

반환 (<=> b)? –

+0

@Sapo : 그렇게 할 수 있습니다. 아니면 xMethod 전체를 스크랩 할 수 있습니다. –

0

방법에 대해 : return (a <=> b) + 2

+3

이 명령은'-1, 0, 1'을'1, 2, 3'으로 매핑하지만'1, 3, 2'가 필요합니다. 당신은 그가 원하는 값을 얻을 수 있도록 수식을 다듬을 수 있지만, 나는 그것이 합병증의 가치가 있다고 생각하지 않습니다. – polygenelubricants

0

당신이 서명에서 정수의 두 가지 항목을 제거하는 경우, 당신은 <이 정의 된 매개 변수와 메소드를 호출 할 수 있습니다.

예.

어설 션 x.xMethod (1, 2) == 1
어설 션 x.xMethod ("2", "1") == 2
어설 션 x.xMethod (2.0, 2.0) == 3

1

그냥 마크의 대답에 확장 :

protected int xMethod (Integer a, Integer b) { 
    switch (a <=> b) { 
     case -1: 1; break 
     case 1: 2; break 
     case 0: 3; break 
    } 
} 

그러나,이 방법은 임의의 값이 있는지 여부를 질문해야합니다. -1, 0, 1을 받아들이도록 (듯이) 호출 원을 변경할 수있는 경우, 메소드는 존재할 이유가 없습니다.

관련 문제