मुझे लगता है समझाने के लिए सबसे आसान तरीका है एक काल्पनिक उदाहरण के द्वारा होता है:को संभालने के लिए कैसे "नहीं सभी कोड पथ मान" जब समारोह के तर्क एक वापसी सुनिश्चित करता
public static int Fail() {
var b = true;
if (b) {
return 0;
}
}
इस कोड संकलन नहीं होगा , और त्रुटि देता है "सभी कोड पथ एक मूल्य वापस नहीं करते हैं," जबकि हम मनुष्य स्पष्ट रूप से देख सकते हैं कि यह करता है। मैं समझता हूं क्यों। मेरा सवाल यह है कि स्थिति का समाधान करने के लिए क्या किया जाना चाहिए। यह कुछ ऐसा हो सकता है:
public static int Fail() {
var b = true;
if (b) {
return 0;
}
throw new ApplicationException("This code is unreachable... but here we are.");
}
लेकिन यह सब सिर्फ मूर्खतापूर्ण लगता है। क्या कोई बेहतर तरीका है? दोबारा, यह कोड एक समेकित उदाहरण है (और इसे return 0
तक घटाया जा सकता है)। मेरा वास्तविक कोड विशाल और जटिल है, लेकिन तार्किक रूप से (गणितीय सबूत द्वारा) बाहर निकलने का प्रयास करने से पहले एक मूल्य वापस कर देता है।
ध्यान दें कि यदि आप बी को 'कॉन्स' स्थानीय चर ('कॉन्स्ट बूल बी = सत्य;') के रूप में घोषित करते हैं, तो यह ठीक –
संकलित करता है यदि आपकी विधि इतनी "भारी और जटिल" है तो आपको शायद इसे पुन: सक्रिय करना चाहिए। अगले मानव प्रोग्रामर के पास क्या उम्मीद होगी यदि कोई संकलक इसे छोड़ देता है? – lesscode
https://github.com/coder0xff/parlex/blob/master/IDE/Nfa.cs Kameda-Weiner एल्गोरिदम पर आधारित है " नोडेटर्मिनिस्टिक फिनिट ऑटोमाटा के राज्य न्यूनीकरण पर"। यह सामान मानव प्रोग्रामर के लिए नहीं है। – Brent