2009-04-13 11 views
50

मैं a path finding tutorial पर देख रहा हूँ और मैं एक void विधि के अंदर एक return बयान (वर्ग PathTest, लाइन 126) देखा:जावा में एक शून्य विधि में वापसी कीवर्ड क्या करता है?

if ((x < 0) || (y < 0) || (x >= map.getWidthInTiles()) || (y >= map.getHeightInTiles())) { 
    return; 
} 

मैं जावा में एक नौसिखिया हूँ। क्या कोई मुझे बता सकता है कि यह क्यों है? जहां तक ​​मुझे पता था, return एक शून्य विधि के अंदर अनुमति नहीं है।

उत्तर

94

यह उस बिंदु पर बस विधि से बाहर निकलता है। एक बार return निष्पादित हो जाने पर, शेष कोड निष्पादित नहीं किया जाएगा।

उदाहरण के लिए।

public void test(int n) { 
    if (n == 1) { 
     return; 
    } 
    else if (n == 2) { 
     doStuff(); 
     return; 
    } 
    doOtherStuff(); 
} 

ध्यान दें कि संकलक बहुत चालाक आप कुछ कोड बताने के लिए है नहीं पहुँचा जा सकता:

if (n == 3) { 
    return; 
    youWillGetAnError(); //compiler error here 
} 
+4

मुझे लगता है कि आपका कोड चित्रकारी है, लेकिन माता-पिता की जानकारी के लिए; मैंने लोगों के साथ काम किया है जो मानते हैं कि प्रत्येक विधि में केवल एक ही रिटर्न स्टेटमेंट होना चाहिए। मैं उनमें से एक नहीं हूं, लेकिन ऐसा करने में कोड को बदसूरत किए बिना जितना संभव हो उतना रिटर्न की संख्या को कम करने में विश्वास करें। – digitaljoel

+2

हाँ, यह निश्चित रूप से उपयोग करने के लिए कुछ नहीं है, लेकिन कभी-कभी यह इसे बहुत आसान बनाता है और अभी भी बहुत पठनीय हो सकता है। – CookieOfFortune

+2

नेस्टेड लूप से तोड़ने का मेरा पसंदीदा तरीका :) –

22

आप, आप बस नहीं कर सकते वापसी एक शून्य विधि में return हो सकता है किसी भी मूल्य (return 5; में), यही कारण है कि वे इसे शून्य विधि कहते हैं। कुछ लोग हमेशा वापसी विवरण के साथ शून्य विधियों को स्पष्ट रूप से समाप्त करते हैं, लेकिन यह अनिवार्य नहीं है। यह हालांकि जल्दी एक समारोह छोड़ने के लिए इस्तेमाल किया जा सकता:

void someFunct(int arg) 
{ 
    if (arg == 0) 
    { 
     //Leave because this is a bad value 
     return; 
    } 
    //Otherwise, do something 
} 
12

जावा भाषा specification कहते हैं आपके विधि शून्य रिटर्न अगर आप कोई अभिव्यक्ति के साथ वापसी कर सकते हैं।

2

यह एक निर्दिष्ट पैरामीटर के साथ फ़ंक्शन के लिए वापसी के समान कार्य करता है, सिवाय इसके कि यह कुछ भी नहीं लौटाता है, क्योंकि वापस लौटने के लिए कुछ भी नहीं है और नियंत्रण कॉलिंग विधि पर वापस भेज दिया जाता है।

2

यह फ़ंक्शन से बाहर निकलता है और कुछ भी नहीं देता है।

कुछ return 1; तरह सही नहीं होगा और क्योंकि यह पूर्णांक 1.

14

रिटर्न कीवर्ड बस आह्वान के बाद समारोह कॉल लाइन के लिए नियंत्रण लौटने ढेर से एक फ्रेम दिखाई नहीं देता।

+6

हाहा। यह बहुत अच्छा जवाब है, लेकिन मुझे संदेह है कि जावा में शुरुआती लोग वास्तव में समझेंगे कि आप क्या कहने की कोशिश कर रहे हैं। – franklin

1

इस उदाहरण को देखें, आप सशर्त रूप से सूची में जोड़ना चाहते हैं। "वापसी" शब्द के बिना, सभी ifs निष्पादित किया जाएगा और ArrayList में जोड़ें!

Arraylist<String> list = new ArrayList<>(); 

    public void addingToTheList() { 

    if(isSunday()) { 
     list.add("Pray today") 
     return; 
    } 

    if(isMonday()) { 
     list.add("Work today" 
     return; 
    } 

    if(isTuesday()) { 
     list.add("Tr today") 
     return; 
    } 
} 
+0

ArrayList को प्रारंभ किया जाना चाहिए था: ArrayList सूची = नया ArrayList <>(); –

संबंधित मुद्दे