groovy: как упростить / переписать этот метод в groovy - PullRequest
5 голосов
/ 27 февраля 2010
protected int xMethod (Integer a, Integer b) {
  if (a<b)
    return 1
  else if (a>b)
    return 2
  else
    return 3
}

Интересно, есть ли какой-нибудь способ переписать вышеуказанный метод по-другому в groovy? как сейчас очень Java стиль.

Ответы [ 4 ]

2 голосов
/ 27 февраля 2010

Кажется, что функции просто нужно вернуть 3 разных значения в зависимости от того, меньше ли a, равно или больше b. В Groovy уже есть оператор, который делает это:

a <=> b

Возвращаемые значения -1, 0 и 1. Возможно, лучше всего сделать рефакторинг кода, чтобы использовать этот оператор вместо xMethod, если это возможно.

Конечно, если важны точные значения 1, 2 и 3, а не только 3 разных значения, то вы не можете сделать это.

1 голос
/ 27 февраля 2010

Просто расширим ответ Марка:

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, то у метода нет причин существовать.

0 голосов
/ 27 февраля 2010

Если вы удалите два вхождения Integer из подписи, вы можете вызвать метод с любыми параметрами, для которых <определено. </p>

* 1003 Е.Г. *

assert x.xMethod (1, 2) == 1
assert x.xMethod ("2", "1") == 2
assert x.xMethod (2.0, 2.0) == 3

0 голосов
/ 27 февраля 2010

Как насчет: return (a <=> b) + 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...