Bereiche in Groovy sind hip

Bereiche in Groovy repräsentieren eine Sammlung von sequentiellen Hüftwerten; Als solche erleichtern sie das präzise Schleifen. In Wahrheit funktionieren sie genau wie eine forSchleife; Sie sind jedoch deutlich knapper. Die typische forSchleife in Java sieht beispielsweise folgendermaßen aus:

for(int x=1; x<=term; x++){ System.out.println(x); }

Natürlich könnte ich die prägnante forSchleifensyntax von Java mithilfe des ehrwürdigen Doppelpunkts ( :) nutzen, wenn ich in der Lage bin, eine Liste von Werten (dh 1bis term) wie folgt zu erfassen :

for(int x : values){ System.out.println(x); }

Wenn also in beiden Fällen mein termWert beispielsweise 3 ist, werden die Zahlen 1, 2 und 3 gedruckt. Interessanterweise kann ich, wenn es meine Tasche ist und ich das exklusive Sortiment möchte - das heißt, ich möchte keine 3 in meiner Serie - forden zweiten Ausdruck meiner ersten Schleife finageln x < term(erinnert Sie daran, wie man mit normalen Arrays arbeitet, oder?). Das gleiche gewünschte Verhalten ist jedoch nicht so einfach, wenn es darum geht, die neuere for-Schleifensyntax zu verwenden - ich nehme an, ich könnte das letzte Element in der valuesSammlung entfernen (was vermutlich 3 ist, oder?).

Groovy hat den Begriff der Bereiche , die, wie bereits erwähnt, im Wesentlichen eine Sammlung von sequentiellen Werten darstellen. In meinem Fall, wenn termgleich 3 ist, kann ich einen inklusiven Bereich von 1, 2, 3 als darstellen

1..term

und ein exklusives Sortiment - das heißt, 1 und 2 nur als

1..
    

Ranges facilitate looping rather efficiently. Because they are a list of values, you can leverage the each method call, which is available to any collection in Groovy (remember, objects other than normal Collections can be collections of values — a String is a collection of characters, for instance).

For example, I can achieve the same result as my first copasetic Java example, like so:

(1..term).each{ println it }

and if I want to capture the exclusive range (that is, I don’t want term’s value), I can simply write:

(1..
       

Note how the range effectively lessens the amount of code one has to write to achieve iteration; that is, a range’s sequential-ness enables me to drop having to specify loop conditions (i.e. x < term). And because ranges in Groovy are, in fact, java.util.Lists they can also be leveraged properly in new-style for loop.

If you still find yourself looking for some familiarity with Java and miss the for loop, you can also leverage ranges in Groovy’s for loop using in rather than a colon like so:

for(x in (1..term)){ println x }

And don’t forget, you can easily substitute that inclusive range for an exclusive one, baby!

Iteration and looping are an everyday occurrence in development land (just like disco music is an everyday occurrence in la-la land) and on more than one occasion, ranges have materially reduced ceremonial for loops that I would have otherwise had to write. So what are you waiting for? Give them a try, man!

You can follow thediscoblog on Twitter now!

This story, "Ranges in Groovy are hip" was originally published by JavaWorld .