如果真有這樣的事我會想象的語法是沿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