Rentang di Groovy keren

Rentang di Groovy mewakili kumpulan nilai sekuensial pinggul ; karena itu, mereka memfasilitasi pengulangan dengan cara yang ringkas. Sebenarnya, mereka berfungsi persis seperti forloop; namun, mereka jauh lebih singkat. Misalnya, forloop tipikal di Java terlihat seperti ini:

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

Tentu saja, saya dapat memanfaatkan forsintaks loop ringkas Java menggunakan titik dua ( :) jika saya dapat menangkap daftar nilai (yaitu 1ke term) seperti:

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

Jadi, dalam kedua kasus, jika termnilai saya adalah, katakanlah, 3, angka 1, 2, dan 3 akan dicetak. Menariknya, jika itu tas saya dan saya ingin rentang eksklusif– yaitu, saya tidak ingin 3 dalam seri saya, saya dapat menyelesaikan forekspresi kedua loop pertama saya ke x < term(mengingatkan Anda tentang bekerja dengan array normal eh?). Perilaku yang diinginkan yang sama, bagaimanapun, tidak begitu mudah ketika menggunakan sintaks for loop yang lebih baru– Saya kira saya dapat menghapus item terakhir dalam valueskoleksi (yang mungkin 3, kan?).

Groovy memiliki pengertian rentang , yang, seperti disebutkan sebelumnya, pada dasarnya mewakili kumpulan nilai berurutan. Dalam kasus saya, jika termsama dengan 3, maka saya dapat mewakili rentang inklusif 1, 2, 3 sebagai

1..term

dan rentang eksklusif - yaitu, 1 dan 2 saja

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 .