2012-08-13 29 views
6

एक बार जब आप अपनी तलाश में हो जाते हैं तो आप तेजी से गणना कैसे रोकेंगे।आप तेजी से गणना कैसे रोकते हैं?

एक लूप में मुझे पता है कि आप सिर्फ एक हजार या कुछ की तरह काउंटर नंबर सेट करते हैं। उदाहरण:?

for (int i=0;i<10;i++){ 
    if (random requirement){ 
     random code 
     i=1000; 
    } 
} 

तो (क आगे पाश प्रकार बात में तेजी से गणन परिवर्तित [array count] को मैं की तुलना कैसे आप इस प्रक्रिया में एक तेजी से गणन रोक सकता द्वारा बिना

+5

'ब्रेक;' कथन का उपयोग करें। आप इन्हें अपने सामान्य फॉर-लूप में भी उपयोग कर सकते हैं। – Dustin

+3

किसने आपको 'for' लूप को रोकने के लिए अनुक्रमणिका variable_ को _reset करने के लिए कहा था ?! हमें उनके प्रोग्रामिंग लाइसेंस को निलंबित करना होगा। –

+0

@ W'rkncacnter खुद :( – bmende

उत्तर

10

from the docs

for (NSString *element in array) { 
    if ([element isEqualToString:@"three"]) { 
     break; 
    } 
} 

यदि आप एक निश्चित सूचकांक तक पहुंचने पर गणना समाप्त करना चाहते हैं, तो block-based enumeration बेहतर हो सकता है, क्योंकि यह आपको सूचकांक देते समय सूचकांक देता है:

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    //… 
    if(idx == 1000) 
     *stop = YES; 
}]; 
+0

लेकिन ब्लॉक अधिक भ्रमित लग रहे हैं ... – bmende

+4

वे महान हैं और एपी में अधिक से अधिक महत्वपूर्ण बन गए हैं पीएलएस एपीआई। आपको उनसे परिचित होना चाहिए। – vikingosegundo

2
for (id object in collection) { 
    if (condition_met) { 
    break; 
    } 
} 
1

क्या आप ब्रेक स्टेटमेंट का उपयोग नहीं कर सके?

for (int x in /*your array*/){ 
    if (random requirement){ 

     random code 
     break; 
    } 
} 
1

बस नेस्टेड लूप के लिए जोड़कर, एक आंतरिक लूप पर एक ब्रेक बस उस लूप को तोड़ देता है। बाहरी लूप जारी रहेगा। यदि आप पूरी तरह से तोड़ना चाहते हैं तो आप ऐसा कर सकते हैं:

BOOL flag = NO; 
for (NSArray *array in arrayOfArrays) { 
    for (Thing *thing in array) { 
     if (someCondition) { 
      // maybe do something here 
      flag = YES; 
      break; 
     } 
    } 
    if (flag) { 
     break; 
    } 
}