2010-02-26 17 views

cevap

2

Görüntünün, b'den küçük, eşit veya daha büyük olup olmadığına bağlı olarak 3 farklı değer döndürmesi gerektiği anlaşılıyor. bunu yapar Groovy bir operatör zaten var:

a <=> b 

dönüş değerleri -1, 0 ve 1 Belki yapılacak en iyi şey olduğunu ise, yerine xMethod bu operatörünü kullanmak için kodu yeniden olduğunu mümkün.

Elbette, 1, 2 ve 3 hassas değerleri sadece 3 ayrı değer değil, önemli ise, bunu yapamazsınız.

+0

@Mark Byers - Tamam, dönüş değerlerimi -1, 0, 1 olarak değiştirirsem yöntemim nasıl görünecek? çok teşekkürler –

+0

dönüş (<=> b)? –

+0

@Sapo: Bunu yapabilirdiniz, ya da xMethod'u tamamen silebilirsiniz. –

0

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

+3

Bu "-1, 0, 1" ile "1, 2, 3" arası eşleşir, ancak 1, 3, 2 'ye gitmek ister. Formülü, istediği değerleri alabilmesi için çözebilirsin, ama bunun komplikasyona değeceğini sanmıyorum. – polygenelubricants

0

Eğer imzadan Tamsayı iki oluşumunu kaldırırsanız, < tanımlanmamış herhangi parametrelerle yöntemini çağırabilirsiniz.

E.g.

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

1

Sadece Mark'ın cevap genişletmek için:

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

Ancak, bu yöntem herhangi bir değeri olup olmadığını sorgulamaya var. Arayanın -1, 0, 1 değerini kabul edecek şekilde değiştirilebilmesi durumunda, yöntemin var olmasının bir nedeni yoktur.

İlgili konular