क्या रिटर्न का उपयोग करने पर आपको स्विच में ब्रेक की आवश्यकता होती है?


110

मैं सोच रहा था कि क्या "स्विच" फ़ंक्शन में "ब्रेक" का उपयोग करने की आवश्यकता है जब "वापसी" का उपयोग किया जाता है।

function test($string)
{
  switch($string)
  {
    case 'test1':
      return 'Test 1: ' . $string;
    case 'test2':
      return 'Test 2: ' . $string;
  }
}

मैंने इसे आज़माया है, और यह "ब्रेक" के बिना ठीक काम करता है। लेकिन मुझे यह जानने की जरूरत है कि क्या यह सुरक्षित है। धन्यवाद।


1
अगर $ string = 'testx' होगा तो क्या होगा;
जगदीसन

जवाबों:


132

हाँ, आप returnइसके बजाय उपयोग कर सकते हैं break...

breakवैकल्पिक है और अन्य सभी कथनों के माध्यम से " गिरने " को रोकने के लिए उपयोग किया जाता है case। तो returnएक समान फैशन में इस्तेमाल किया जा सकता है, जैसा returnकि फ़ंक्शन निष्पादन को समाप्त करता है।

इसके अलावा, यदि आपके सभी caseकथन इस प्रकार हैं:

case 'foo':
   $result = find_result(...);
   break;

और switchआपके द्वारा दिए गए कथन के बाद return $result, return find_result(...);प्रत्येक में उपयोग caseकरने से आपका कोड बहुत अधिक पठनीय हो जाएगा।

अंत में, defaultमामले को जोड़ना मत भूलना । यदि आपको लगता है कि आपका कोड कभी भी defaultमामले तक नहीं पहुंचेगा, तो आप assertफ़ंक्शन का उपयोग कर सकते हैं , क्योंकि आप कभी भी निश्चित नहीं हो सकते।


शुक्रिया लुझिन, कि मैंने क्या सोचा।
ईएमसी

16

आपको ब्रेक की आवश्यकता नहीं है, रिटर्न फ़ंक्शन का निष्पादन बंद कर देता है।

(संदर्भ के लिए: http://php.net/manual/en/function.return.php कहता है:

यदि किसी फ़ंक्शन के भीतर से कॉल किया जाता है, तो रिटर्न () स्टेटमेंट तुरंत वर्तमान फ़ंक्शन का निष्पादन समाप्त कर देता है

)


4

कोई इसकी आवश्यकता नहीं है, क्योंकि जब कुंजी शब्द रिटर्न कहा जाता है, तो यह इंगित करेगा कि विशेष फ़ंक्शन जिसे स्विच / केस कहा जाता था, समाप्त हो गया है।


3

नहीं, आपको breakकिसी switch caseकथन की आवश्यकता नहीं है । breakवास्तव में वैकल्पिक है, लेकिन सावधानी के साथ उपयोग करें।


2

आपको इसकी आवश्यकता नहीं है, लेकिन मैं इसे किसी भी मामले में अच्छे अभ्यास के रूप में उपयोग करने की दृढ़ता से सलाह दूंगा।


6
कोई मतलब नहीं है, क्योंकि वापसी स्पष्ट रूप से निष्पादन पर स्वयं द्वारा मौजूद है =) कम कोड बेहतर है।
EMC

7
कम कोड! = बेहतर। जाओ कोड गोल्फ खेलते हैं। मैं कोड के बजाय पठनीय, स्पष्ट कोड चाहता हूं, यह केवल पठनीयता और समझ की कीमत पर एक पंक्ति में हो सकता है।
मार्टिन बीन

3
आप दोनों तरीकों से इस पर बहस कर सकते हैं। कुछ संकलक स्विच में वापसी के बाद गैर निष्पादन योग्य कोड के बारे में चेतावनी देते हैं, कुछ नहीं। यह व्यक्तिगत प्राथमिकता है, और मेरे लिए कम से कम यह रंग है कि कितनी बार मुझे एक स्विच के माध्यम से गिरने से काट लिया गया है, मुझे ब्रेक देखना पसंद है।
हैरी

2

ब्रेक सिर्फ एक सावधानी का बयान है जिसका उपयोग स्विच स्टैचर के नियंत्रण को किसी अन्य मामले में जाने से रोकने के लिए किया जाता है ... उदाहरण के लिए यदि आपके पास तीन केस स्टेटमेंट हैं और मान पहली स्थिति के लिए है और आपने बिना किसी ब्रेक संरचना के केस का उपयोग किया है तो निम्नलिखित सभी मामले केवल पहले मामले के लिए संतुष्ट होने की स्थिति के बावजूद निष्पादित किया जाएगा ... वापसी asme फ़ंक्शन कर सकती है, इसलिए यह एक समस्या नहीं होगी यदि आप ब्रेक के स्थान पर रिटर्न का उपयोग करते हैं क्योंकि वापसी स्विच केस स्टेटमेंट से दूर ले जाएगी जो उस पल की जरूरत है ...... आशा है कि यह मदद करता है ....


1

रिटर्न कॉलिंग विधि पर नियंत्रण वापस देता है, जहां स्विच ब्लॉक के बाद पहले निर्देश पर ब्रेक जंप होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.