यह विषय वास्तव में थोड़ा अधिक जटिल है जैसा कि अब तक के उत्तरों में वर्णित है। रोब नॉरिस का यह ब्लॉगपोस्ट इसे और अधिक विस्तार से बताता है और रिटर्न का उपयोग करते समय उदाहरण देता है कि वास्तव में आपका कोड टूट जाएगा (या कम से कम गैर-स्पष्ट प्रभाव होगा)।
इस बिंदु पर मुझे केवल पोस्ट का सार उद्धृत करना चाहिए। सबसे महत्वपूर्ण कथन शुरुआत में सही है। इसे एक पोस्टर के रूप में प्रिंट करें और इसे अपनी दीवार पर डालें :-)
return
कीवर्ड "वैकल्पिक" या "निष्कर्ष निकाला" नहीं है; यह आपके प्रोग्राम का अर्थ बदल देता है, और आपको इसका उपयोग कभी नहीं करना चाहिए।
यह एक उदाहरण देता है, जहां यह वास्तव में कुछ तोड़ता है, जब आप किसी फ़ंक्शन को इनलाइन करते हैं
def sum(ns: Int*): Int = ns.foldLeft(0)((n, m) => n + m)
scala> sum(33, 42, 99)
res2: Int = 174
def sumR(ns: Int*): Int = ns.foldLeft(0)((n, m) => return n + m)
scala> sumR(33, 42, 99)
res3: Int = 33
चूंकि
एक return
अभिव्यक्ति, जब मूल्यांकन किया जाता है, वर्तमान गणना को छोड़ देता है और उस विधि के कॉलर पर वापस लौटता है जिसमें return
दिखाई देता है।
यह लिंक्ड पोस्ट में दिए गए उदाहरणों में से केवल एक है और इसे समझना सबसे आसान है। वहाँ अधिक हैं और मैं आपको प्रोत्साहित करता हूं कि आप वहां जाएं, पढ़ें और समझें।
जब आप जावा जैसी अनिवार्य भाषाओं से आते हैं, तो यह पहली बार में अजीब लग सकता है, लेकिन एक बार जब आप इस शैली के अभ्यस्त हो जाएंगे तो यह समझ में आएगा। मुझे एक और उद्धरण के साथ बंद करें:
यदि आप खुद को ऐसी स्थिति में पाते हैं, जहां आपको लगता है कि आप जल्दी लौटना चाहते हैं, तो आपको उस तरीके पर फिर से विचार करने की जरूरत है, जिस तरह से आपने अपनी गणना को परिभाषित किया है।