If there were such a thing I would imagine the syntax to be something along the lines of
while(Integer item : group<Integer>; item > 5)
{
//do something
}
Just wondering if there was something like this or a way to imitate this?
If there were such a thing I would imagine the syntax to be something along the lines of
while(Integer item : group<Integer>; item > 5)
{
//do something
}
Just wondering if there was something like this or a way to imitate this?
for(Integer item : group<Integer>)
{
if (item <= 5)
break;
//do something
}
This is what I can think of.
No, the closest would be:
for (Integer item : group<Integer>)
{
if (item <= 5)
{
break;
}
//do something
}
Of course if Java ever gets concise closures, it would be reasonable to write something like .NET's Enumerable.TakeWhile
method to wrap the iterable (group
in this case) and make it finish early if the condition stops holding.
That's doable even now of course, but the code to do it would be ugly. For reference, the C# would look like this:
foreach (int item in group.TakeWhile(x => x > 5))
{
// do something
}
Maybe Java will get nice closures some time...
For reference, Jon Skeet's second answer in Java would currently, for some interface Predicate
, look something like:
for (int item : takeWhile(group, new Predicate<Integer>() {
public boolean contains(Integer x) {
return x > 5;
}
}) {
// do something
}
It's the syntax that sucks, not the semantics.