ماذا تفعل العائد الكلمة الرئيسية في طريقة باطل في جافا؟

StackOverflow https://stackoverflow.com/questions/744676

  •  09-09-2019
  •  | 
  •  

سؤال

أنا أنظر إلى مسار العثور على البرنامج التعليمي ولاحظت return بيان داخل void الطريقة (الفئة PathTest, ، الخط 126):

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

أنا مبتدئ في جاوة. هل يمكن لأحد أن يقول لي لماذا هناك؟ بقدر ما أعرف، return داخل طريقة فراغ غير مسموح بها.

هل كانت مفيدة؟

المحلول

إنه يخرج فقط الطريقة في تلك المرحلة. مرة واحدة 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
}

نصائح أخرى

بإمكانك أن تأخذ return بطريقة باطل، لا يمكنك فقط إرجاع أي قيمة (كما في return 5;)، لهذا السبب يسمونه فارغ طريقة. بعض الناس ينتهيون دائما بشكل صريح بطرق الفراغ مع بيان العودة، لكنه ليس إلزاميا. هو - هي يمكن أن تستخدم لترك وظيفة في وقت مبكر، على الرغم من:

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

الكلمة الأساسية ببساطة ينبثق إطار من مكدس المكالمات التي تعود إلى عنصر التحكم إلى السطر بعد مكالمة الوظيفة.

لغة جافا تخصيص يقول أنه يمكنك العودة دون تعبير إذا عودة أسلوبك باطلة.

إنها تعمل على أنها تعود إلى وظيفة مع معلمة محددة، إلا أنها لا تعرج شيئا، حيث لا يوجد شيء للعودة والتحكم مرة أخرى إلى طريقة الاتصال.

إنه يخرج من الوظيفة وإرجاع أي شيء.

شيء مثل return 1; سيكون غير صحيح لأنه يعيد عدد صحيح 1.

انظر هذا المثال، تريد إضافة إلى القائمة مشروطة. بدون كلمة "العودة"، سيتم تنفيذ جميع ifs وإضافتها إلى قائمة الصفيف!

    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;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top