نوع الإرجاع
في برمجة الحاسوب ، يُحدد نوع الإرجاع (أو نوع النتيجة ) نوع بيانات القيمة المُعادة من روتين فرعي أو دالة ويُقيدها . [ 1 ] في العديد من لغات البرمجة (وخاصة لغات البرمجة ذات الكتابة الثابتة مثل C و C++ و Java )، يجب تحديد نوع الإرجاع صراحةً عند تعريف دالة.
في مثال C:
دالة حساب المجموع ( int a , int b ) { return a + b ; }نوع القيمة المُعادة هو int . وبالتالي، يمكن للبرنامج الاعتماد على أن الدالة تُعيد قيمة من نوع int . تُستخدم آليات مختلفة في حالة عدم إعادة الدالة الفرعية لأي قيمة، على سبيل المثال، يُستخدم نوع القيمة void في بعض لغات البرمجة.
void sayHello () { printf ( "مرحباً بالعالم!" ); }إرجاع قيمة من دالة
يعود الأسلوب إلى الكود الذي استدعاه عندما يكمل جميع العبارات في الأسلوب، أو يصل إلى عبارة الإرجاع، أو يطرح استثناءً، أيهما يحدث أولاً.
لتحديد نوع القيمة المُعادة من دالة، يتم تضمينه في تعريف الدالة. وفي متن الدالة، تُستخدم عبارة الإرجاع لإعادة القيمة.
أي دالة مُعرَّفة كـ void لا تُرجع قيمة. ليس من الضروري أن تحتوي على عبارة return، ولكن يُمكن أن تحتوي عليها. في هذه الحالة، يُمكن استخدام عبارة return للخروج من كتلة التحكم في التدفق وإنهاء الدالة، ويتم استخدامها ببساطة على النحو التالي:
يعود ؛إذا تم إرجاع قيمة من دالة معلنة void، فسيحدث خطأ في المترجم.
أي دالة غير مُعلنة voidيجب أن تحتوي على عبارة إرجاع مع قيمة إرجاع مقابلة، كما يلي:
أعد القيمة المرجعية ؛يجب أن يتطابق نوع بيانات القيمة المُعادة مع نوع القيمة المُعادة المُعلن عنه في الدالة؛ على سبيل المثال، لا يمكن إرجاع intقيمة من دالة مُعلنة لإرجاع قيمة من نوع bool.
الطريقة getArea()الموجودة في Rectangleالفئة التي تمت مناقشتها في الأقسام المتعلقة بالكائنات تُرجع قيمة من نوع int:
class Rectangle { private int width ; private int height ; // ...// دالة لحساب مساحة المستطيل public int getArea () { return width * height ; } }تُعيد هذه الطريقة العدد الصحيح الذي تُقيّم إليه العبارة width * height.
تُرجع هذه getArea()الطريقة نوعًا أوليًا. كما يمكن أن تُرجع الطريقة نوعًا مرجعيًا . على سبيل المثال، في برنامج لمعالجة Bicycleالكائنات، قد يكون لدينا طريقة كهذه:
class Bicycle { // فئة الدراجة الهوائية }class RaceEnvironment { // فئة البيئة }public class BicycleRace { // ...public Bicycle playBicycleRace ( Bicycle bike1 , Bicycle bike2 , RaceEnvironment env ) { Bicycle winner ; // كود لحساب أي دراجة أسرع، // بناءً على تروس كل دراجة // وسرعة دورانها، و // بناءً على البيئة (التضاريس والرياح) return winner ; } }مراجع
- ↑ كيرنيغان، برايان دبليو .؛ ريتشي، دينيس إم. (1988). لغة البرمجة سي ( الطبعة الثانية). برنتيس هول. ISBN 0-13-110362-8.
- البرامج الفرعية
