सही तरीका पाश के लिए एक से कन्वर्ट करने के लिए थोड़ी देर के पाश करने के लिए क्या है?

वोट
1

मैं फार्म के पाश के लिए एक है:

for (int i = from; i < to; i++) {
  // do some code (I don't know exactly what, it is subject to change)
}

और मैं यह कुछ समय पाश (ज्यादातर क्योंकि मैं के मूल्य के साथ खेलना चाहते करने के लिए परिवर्तित करना चाहते हैं iजाने के लिए लूप के अंदर पीछे और आगे और मेरे सह कार्यकर्ता सोचता है कि पाश के लिए एक में यह कर समस्याओं की संभावना है। मैं के लिए करते हैं उसके साथ सहमत हैं)। इसलिए मैं कुछ इस तरह लिखा है:

int i = from;
while (i < to) {
  try {
    // do some code (I don't know exactly what, it is subject to change)
  } finally {
    i++;
  }
}

जो कुछ कुछ जोर से टिप्पणी के लिए कहा जाए। मेरे तर्क आप नहीं जानते कि क्या लूप के अंदर कोड करता है - यह हो सकता है (और है) एकाधिक है continueआज्ञाओं।

एक प्रतिक्रिया के रूप में वह यह लिखा:

int i = from - 1;
while (++i < to) {
  // do some code (I don't know exactly what, it is subject to change)
}

इसकी कम लाइनों दी, लेकिन मैं अभी भी लगता है कि मेरी कोड और अधिक सुरुचिपूर्ण है - तुम्हें क्या लगता है?

03/11/2009 को 18:26
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


6 जवाब

वोट
3

और मैं (ज्यादातर क्योंकि मैं पीछे और आगे और मेरे सह कार्यकर्ता सोचता है कि पाश के लिए एक में यह कर समस्याओं की संभावना है जाने के लिए लूप के अंदर मैं के मूल्य के साथ खेलना चाहते हैं थोड़ी देर के पाश करने के लिए इसे परिवर्तित करना चाहते हैं। मैं करते हैं उसके साथ सहमत करने के लिए)।

यह सबसे अधिक भाषाओं में पूरी तरह से स्वीकार्य है। वहाँ पाश के लिए एक से बचने के लिए कोई कारण नहीं है।

03/11/2009 को 18:30
का स्रोत उपयोगकर्ता

वोट
5

जबकि एक पाशन संरचना में आपके सूचकांक के मूल्य के साथ खेल रहा है समस्याओं, की संभावना है कोई बात नहीं क्या पाशन संरचना है

यह अगर यह पाश या थोड़ी देर के पाश के लिए एक है बात करने के लिए नहीं जा रहा है, बिंदु इंडेक्सर अंत में पाश समाप्ति के एक निर्णय करने के लिए आप का नेतृत्व करेंगे है?

आप विश्वास है कि आप इंडेक्सर अंततः कारण होगा अपने से बाहर निकलें हालत हासिल किए जाने वाले कर रहे हैं, तो यह है कि आप सभी के साथ संबंध होना चाहिए, चाहे नहीं या थोड़ी देर के लिए एक प्रयोग है।

03/11/2009 को 18:31
का स्रोत उपयोगकर्ता

वोट
0

यह करने के लिए सबसे आसान तरीका है इस तरह के नीचे के रूप में थोड़ी देर के पाश में परिवर्तित नहीं करने के लिए, हो जाएगा।

for (int i = from; i < to; ) {
  // do some code (I don't know exactly what, it is subject to change)
  i += rand()*10;
}
03/11/2009 को 18:33
का स्रोत उपयोगकर्ता

वोट
2

मुझे ऐसा लगता है यह आसान और हो सकता है कि अधिक पठनीय यह कन्वर्ट करने के लिए:

while (condition == true) {
   // do stuff
   // set the condition flag appropriately
}

और इस तरह चर incrementation से पाश की समाप्ति अलग।

अगर मैं एक सीमा की जांच (जैसे के साथ एक पाश देख i < limit) मैं एक चर है कि एक (यथोचित) सुसंगत फैशन में संशोधित किया जा रहा है बनाया जा सकता है ग्रहण करने के लिए जाते हैं। कोई कारण नहीं आप आप क्या चाहते हैं क्यों नहीं कर सकते है, लेकिन मैं अधिक पठनीय और अधिक अपेक्षित व्यवहार की ओर झुक जाएगा।

03/11/2009 को 18:34
का स्रोत उपयोगकर्ता

वोट
0

के बारे में जो कोड मैं का चयन करेंगे सवाल का जवाब करने के लिए; मैं अपने लंबे समय तक कोड का चयन करें। इसकी ज्यादा पहले (अब) पाश पढ़ने में आसान। और हाँ मैं दूसरा पढ़ सकते हैं लेकिन यदि आप अनुभव के बहुत सारे है आप दो बार देखने के लिए पता है कि कि पाश करता है। प्लस संकलक कोड काफी अच्छी तरह से अनुकूलित करेंगे।

03/11/2009 को 18:35
का स्रोत उपयोगकर्ता

वोट
1

क्यों मूर्ख छोरों से परेशान जब आप uber शक्तिशाली के साथ एक ही है (और भी बहुत कुछ!) कर सकते हैं goto?

i = fro;
my_loop:
//all your stuff here
i++;
if (i < to) goto my_loop;

आप उन बेहोश दिल प्रोग्रामर कि कम से एक हैं, तो goto, तो आप इस के साथ की कोशिश कर सकते हैं:

i = fro;
while(1) {
    //your stuff here
    if (++i < to) break;
}
03/11/2009 को 18:38
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more