هل هناك شيء مثل في حين أن كل حلقة في جافا؟

StackOverflow https://stackoverflow.com/questions/1066393

  •  21-08-2019
  •  | 
  •  

سؤال

إذا كان هناك شيء من هذا القبيل أتصور بناء الجملة أن يكون شيئا على غرار

while(Integer item : group<Integer>; item > 5)
{
    //do something
}

وأتساءل فقط إذا كان هناك شيء من هذا القبيل أو وسيلة لتقليد هذا؟

هل كانت مفيدة؟

المحلول

لا، الأقرب سيكون:

for (Integer item : group<Integer>)
{
    if (item <= 5)
    {
        break;
    }
    //do something
}

وبالطبع إذا كان جافا يحصل من أي وقت مضى إغلاق موجزة، فإنه سيكون من المعقول أن أكتب شيئا مثل <أ href ل. NET ل= "http://msdn.microsoft.com/en-us/library/system.linq.enumerable.takewhile .aspx اتصال "يختلط =" نوفولو noreferrer "> طريقة Enumerable.TakeWhile للالتفاف iterable (group في هذه الحالة) وجعلها تنتهي في وقت مبكر إذا توقف حالة عقد.

وهذا يمكن تحقيقه حتى الآن بالطبع، ولكن رمز للقيام بذلك سيكون القبيح. للإشارة، فإن C # تبدو هذه:

foreach (int item in group.TakeWhile(x => x > 5))
{
    // do something
}

وربما جافا سيحصل الإغلاق لطيفة بعض الوقت ...

نصائح أخرى

for(Integer item : group<Integer>)
{
    if (item <= 5)
         break;
    //do something
}

وهذا ما يمكنني أن أفكر.

لإشارة، الجواب الثاني جون السكيت في جاوة سيكون في الوقت الراهن، لبعض interface Predicate، تبدو شيئا مثل:

for (int item : takeWhile(group, new Predicate<Integer>() {
    public boolean contains(Integer x) {
        return x > 5;
    }
}) {
    // do something
}

وانها بناء الجملة التي تمتص، وليس معاني الكلمات.

في جاوة while هو شرط أساس. ما الذي تبحث عنه هو بناء foreach.

وليس هناك شيء من هذا القبيل مثل الوقت، كل في جاوة ولكن لدينا ل، كل الذي هو كبيرة جدا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top