2010-02-26 14 views

risposta

2

Sembra che la funzione debba solo restituire 3 valori diversi a seconda che un valore sia minore, uguale o maggiore di b. C'è già un operatore in Groovy che fa questo:

a <=> b 

I valori di ritorno sono -1, 0 e 1. Forse la cosa migliore da fare è refactoring del codice per utilizzare questo operatore al posto di xMethod, se questo è possibile.

Ovviamente, se i valori precisi 1, 2 e 3 sono importanti e non solo 3 valori distinti, non è possibile farlo.

+0

@Mark Byers - OK, come sarà il mio metodo se cambio i valori di ritorno in -1, 0, 1? molte grazie –

+0

ritorno (a <=> b)? –

+0

@Sapo: puoi farlo, oppure puoi semplicemente cancellare completamente xMethod. –

0

ne dite: return (a <=> b) + 2

+3

Questo mappa '-1, 0, 1' a' 1, 2, 3', ma ha bisogno che diventi '1, 3, 2'. Puoi elaborare la formula in modo che ottenga i valori che desidera, ma non penso che valga la pena. – polygenelubricants

0

Se si rimuovono le due occorrenze di Integer dalla firma, è possibile chiamare il metodo con tutti i parametri per i quali < è definito.

E.g.

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

1

Giusto per ampliare la risposta di Mark:

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

Tuttavia, è necessario chiedersi se questo metodo ha alcun valore. Se il chiamante può essere modificato per accettare -1, 0, 1, allora il metodo non ha motivo di esistere.