اذهب إلى المحتوى
  • 0

إستخدام return داخل الدالة

السؤال

نشر

مرحباً،

لدي إستفسار بخصوص return،

في بعض الأحيان لا نستخدم return داخل الدالة، ولكن تأتي نتيجة تنفيذ الدالة نفس نتيجة تنفيذ الدالة بreturn 

السؤال هو: متى أستخدم return ومتى لا في الدالة.

وشكراً.

Recommended Posts

  • 0
نشر

تستخدم return عندما تريد ان تعيد الدالة قيمة معينة لتستخدمها في مكان اخر داخل الكود، فمثلا لو كنت تحسب عملية حسابية وتريد حفظ النتيجة في متغير او تمريرها لدالة اخرى فانت بحاجة لاستخدام return.
اما اذا كان الغرض من الدالة هو مجرد القيام بفعل معين مثل طباعة جملة في الطرفية او تنفيذ امر لا يتطلب استرجاع بيانات فليس من الضروري استخدامها، وفي هذه الحالة ستنفذ الدالة الكود الموجود بداخلها ثم تنتهي دون ارجاع شيء محدد.
الفرق يظهر بوضوح عندما تحاول مساواة متغير بنتيجة الدالة، فاذا كانت تستخدم return سيتم تخزين القيمة في المتغير، واذا لم تستخدمها سيكون المتغير فارغا او يحتوي على None او undefined حسب لغة البرمجة المستخدمة.
بالتوفيق إن شاء الله

  • 0
نشر

هناك نوعين من الدالة . دالة لا تعيد اى شئ و دالة تعيد نتيجة في نهايتها .

فالداول التي لا تعيد شئ هي الدوال التي تقوم بتنفيذ مهمة معينة في الخلفية أو تقوم بالطباعة فهنا لا نقوم بإستخدام return . فمثلا لو اردت طباعة شئ ما للمستخدم أو لو أردت إرسال رسالة ما او وضع شئ في قاعدة البيانات او تسجيل شئ ما فهنا الدالة لا يفترض ان تعيد شئ .

أما الدوال التي تعيد لك نتيجة فهي الدوال التي تريد إستخدام النتيجة النهائية التي وصلت لها الدالة . فمثلا لو اردت جمع رقمين فهنا انت تريد نتيجة الجمع او مثلا اردت إرسال رسالة ما وتريد ان تعرف هل الدالة أرسلتها ام لا هنا ستقوم بإستخدام return للحصول على النتيجة في نهاية الدالة وتستطيع وضع تلك النتيجة عند إستدعاء الدالة في متغير والتعامل معها كما تريد.

  • 0
نشر

return نستخدمها لإنهاء تنفيذ الدالة فورًا وإرجاع قيمة أو None في حال لم تُحدد قيمة، وبمجرد أن تصل الدالة إلى جملة return، يتوقف تنفيذها تمامًا، وأي كود يأتي بعد return داخل نفس الدالة لن يتم تنفيذه.

لكن ما معنى إرجاع قيمة؟

 الأمر أشبه بأن تعطي أخاك نقود ليشتري لك شيئًا ما، وتخبره أن يذهب ويعود إليك به، وما يعود إليك به هي نفس طريقة عمل return في الدوال، فبدون كتابتها وتحديد ما الذي تريد إعادته، سيقوم أخاك بتنفيذ ما أردته لكن لن يعود إليك بشيء.

ولكن كيف يقوم بتنفيذ ما أردته دون إعادة شيء؟

سيفعل ذلك داخل الدالة لكن خارجها أنت لن تحصل على أي قيمة لأنك لم تحدد له ما الـ return ؟

وسأشرح لك بالأمثلة من خلال جافاسكريبت:

function myFunction() {
  return "Hello, world!";
}

console.log(myFunction()); // Hello, world!

لدينا دالة تسمى myFunction()، وتلك الدالة تعيد القيمة "Hello, world!".

وعندما نقوم باستدعاء تلك الدالة، يتم إرجاع القيمة "Hello, world!" إلى الكود الذي استدعاها، والذي يتم طباعته في وحدة التحكم.

والآن مثال آخر، لكن لن نكتب return بل لتنفيذ عملية حسابية داخل الدالة فقط:

function myFunction() {
  let number = 1 + 1
  number += 3
}

console.log(myFunction()); // undefined

ما حدث هنا هو أنني قمت بإنشاء متغير داخل الدالة باسم number ثم أعطيته قيمة 1 + 1 أي قيمة 2.

بعد ذلك قمت بتغيير قيمته بإضافة العدد 3 إليه وبالتالي أصبح 5.

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

لاحظ بعد كتابتها ما الذي يحدث:

function myFunction() {
  let number = 1 + 1
 return number += 3
}

console.log(myFunction()); // 5

سيتم طباعة 5 لأنني حددت له إرجاع قيمة number.

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

  • 0
نشر

إضافة لما سبق هناك استخدامًا آخر وهو استخدام return لإيقاف تنفيذ دالة ما فورًا عند تحقق شرط معين، دون أن يكون الهدف بالضرورة إرجاع قيمة يستفاد منها خارج الدالة. مثال:

function greetUser(user) {
  if (!user) {
    return; // إيقاف تنفيذ الدالة هنا دون إرجاع أي قيمة محددة
  }
  console.log("مرحبًا " + user.name);
}

هنا لم أكتب return لأجل إرجاع نتيجة، بل لأمنع تنفيذ بقية الكود في حال لم يمرر مستخدم بدلًا من وضع بقية الكود بأكمله داخل else.

  • 0
نشر

الفرق الأساسي

من غير return، الدالة بترجع None (أو undefined في JavaScript) تلقائياً بعد ما تخلص تنفيذ كل الأسطر. الدالة بتنفذ اللي جواها (زي طباعة، تعديل متغير global، إلخ) بس ما بترجع قيمة تقدر تستخدمها بعدين.

مع return، الدالة بترجع قيمة محددة تقدر تخزنها في متغير أو تستخدمها في تعبير (expression) تاني. 

# من غير return
def اطبع_مربع(x):
    print(x * x)

نتيجة = اطبع_مربع(5)  # هتطبع 25 على الشاشة
print(نتيجة)  # None  <-- القيمة اللي رجعت من الدالة

# مع return
def احسب_مربع(x):
    return x * x

نتيجة = احسب_مربع(5)
print(نتيجة)  # 25  <-- فعلاً القيمة اللي احتاجها

لو حسّيت إن النتيجة نفسها، غالباً ده لأنك بس بتستخدم print() عشان تشوف الناتج على الشاشة، مش لأنك فعلاً بتستخدم قيمة الإرجاع في مكان تاني.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...