मुझे लगता है कि मुझे समझ में नहीं आता कि स्विच केस में स्कोप कैसे काम करता है।स्विच केस में वेरिएबल का दायरा
क्या कोई मुझे समझा सकता है कि पहला कोड संकलित क्यों नहीं करता है लेकिन दूसरा करता है?
कोड 1:
int key = 2;
switch (key) {
case 1:
String str = "1";
return str;
case 2:
String str = "2"; // duplicate declaration of "str" according to Eclipse.
return str;
}
कोड 2:
int key = 2;
if (key == 1) {
String str = "1";
return str;
} else if (key == 2) {
String str = "2";
return str;
}
कैसे चर "str" के दायरे में आ केस 1 के भीतर निहित नहीं है? सभी मामलों और डिफ़ॉल्ट, अगर शामिल -
अगर मैं मामले 1 चर "str" घोषित कर दिया कभी नहीं है की घोषणा को छोड़ ...
इस लड़के को सुनो। वह सही है। – John
सही। लेकिन मैं अपनी टीम में किसी भी प्रोग्रामर से बहुत नाराज हूं जो बहुत अच्छे कारण के बिना इस "वाक्यविन्यास" का उपयोग करता है। यह भ्रम और बग के लिए एक नुस्खा है। यह दृष्टि से इस तथ्य को छुपाता है कि पहला मामला ब्लॉक (यदि यह 'वापसी' के लिए नहीं था) बंद ब्रेस के बाद भी "जारी रहता है" - और 'ब्रेक' को भूलने में मदद करता है। – leonbloy
भी: रखरखाव और बग रोकथाम के लिए 'ब्रेक' का उपयोग करें! भले ही आवश्यक नहीं है। – worenga