如果真有这样的事我会想象的语法是沿Java中的每个循环都有一个这样的事情吗?
while(Integer item : group<Integer>; item > 5)
{
//do something
}
只是想知道,如果有这样的事情还是有办法模仿此线的东西?
如果真有这样的事我会想象的语法是沿Java中的每个循环都有一个这样的事情吗?
while(Integer item : group<Integer>; item > 5)
{
//do something
}
只是想知道,如果有这样的事情还是有办法模仿此线的东西?
没有,最近的是:
for (Integer item : group<Integer>)
{
if (item <= 5)
{
break;
}
//do something
}
当然,如果Java的不断变简洁关闭,这将是合理的写类似.NET的Enumerable.TakeWhile
方法(在这种情况下,group
)包裹的迭代和如果条件停止,则尽早完成。
当然,即使是现在也是可行的,但是执行代码会很丑陋。作为参考,C#是这样的:
foreach (int item in group.TakeWhile(x => x > 5))
{
// do something
}
也许Java将得到很好的封闭了一段时间......
for(Integer item : group<Integer>)
{
if (item <= 5)
break;
//do something
}
这是我能想到的。
仅供参考,乔恩斯基特在Java的第二个答案将目前,对于一些interface Predicate
,看起来如:
for (int item : takeWhile(group, new Predicate<Integer>() {
public boolean contains(Integer x) {
return x > 5;
}
}) {
// do something
}
这是吸引语法,而不是语义。
在Java while
是基于条件的。你正在寻找的是foreach
构造。
没有像Java那样的东西 - 每个都在Java中,但我们已经有了 - 每个东西都非常棒。
准确地说我的建议,除了你的情况看起来像是对我来说是错误的。 – 2009-06-30 22:25:35
看起来不错,不是吗? – WowtaH 2009-06-30 22:28:45
谢谢乔恩Skeet,修复它 – 2009-06-30 22:29:04