2011-07-16 5 views
3

Je veux des nombres de 0.1 à 2 (tels que 0.1.0.2,0.3,0.4 jusqu'à 2.0), comme je suis un gars groovy j'ai décidé Range fera le travail, et est venu avec le code comme ceci:Comment faire cela dans Groovy Range Object?

def a = 0.1..2 
println a 

Mais son impression seulement [0.1, 1.1] comme sa sortie! Donc, je ne peux pas le faire en Range? ou par la syntaxe est faux?

Merci d'avance.

+1

Aussi, voir cette question familière précédente http: // stackoverflow. com/questions/573155/groovy-range-a-0-5-step-size –

Répondre

6

ce n'est pas trivial. L'objet range a une méthode step, mais cela ne permet que des étapes entières. Une autre solution pourrait être de définir votre propre objet range.

Si une liste est ok, vous pouvez utiliser la méthode étape sur un certain nombre:

0.1.step(2, 0.1){ print "$it "} 

une autre solution:

(1 .. 20).collect{it/10} 
+0

Oh mais dans Groovy in Action (première édition c'est possible!) ... Et la réponse postée par Boris ne marchera pas! –

+0

quel numéro de page? – rdmueller

+1

l'a trouvé. Il semble qu'il y avait un changement. Dans la première édition, vous trouverez un exemple 'assert (0.0..1.0) .contains (0.5)' qui a été changé en 'assert (0.0..1.0) .contains (0.5) == false' dans la seconde édition du livre. – rdmueller