protected int xMethod (Integer a, Integer b) {
if (a<b)
return 1
else if (a>b)
return 2
else
return 3
}
groovy에서 위의 방법을 다르게 다시 작성하는 방법이 있는지 궁금합니다. 지금은 매우 자바 스타일입니다.groovy : Groovy에서이 방법을 단순화/재 작성하는 방법
protected int xMethod (Integer a, Integer b) {
if (a<b)
return 1
else if (a>b)
return 2
else
return 3
}
groovy에서 위의 방법을 다르게 다시 작성하는 방법이 있는지 궁금합니다. 지금은 매우 자바 스타일입니다.groovy : Groovy에서이 방법을 단순화/재 작성하는 방법
a가 a보다 작거나 같거나 b보다 큰지 여부에 따라 함수가 3 개의 다른 값을 반환하면됩니다. 이 수행 그루비의 연산자는 이미 있습니다 :
a <=> b
반환 값 -1, 0과 1은 아마도 할 수있는 가장 좋은 방법은이 경우, 대신 xMethod의 연산자를 사용하는 코드를 리팩토링이다 가능한.
정확한 값 1, 2 및 3이 중요하고 3 개의 고유 한 값이 아니라면이 작업을 수행 할 수 없습니다.
방법에 대해 : return (a <=> b) + 2
이 명령은'-1, 0, 1'을'1, 2, 3'으로 매핑하지만'1, 3, 2'가 필요합니다. 당신은 그가 원하는 값을 얻을 수 있도록 수식을 다듬을 수 있지만, 나는 그것이 합병증의 가치가 있다고 생각하지 않습니다. – polygenelubricants
당신이 서명에서 정수의 두 가지 항목을 제거하는 경우, 당신은 <이 정의 된 매개 변수와 메소드를 호출 할 수 있습니다.
예.
어설 션 x.xMethod (1, 2) == 1
어설 션 x.xMethod ("2", "1") == 2
어설 션 x.xMethod (2.0, 2.0) == 3
그냥 마크의 대답에 확장 :
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을 받아들이도록 (듯이) 호출 원을 변경할 수있는 경우, 메소드는 존재할 이유가 없습니다.
@Mark Byers - 좋아, 반환 값을 -1, 0, 1로 변경하면 내 방법은 어떻게 생깁니 까? 많은 감사 –
반환 (<=> b)? –
@Sapo : 그렇게 할 수 있습니다. 아니면 xMethod 전체를 스크랩 할 수 있습니다. –