العامل الثلاثي

تعديل
نسخ الدرس
تحميل الدرس

العامل الثلاثي (Ternary Operator)

تعلمنا في الدروس السابقة كيفية استخدام if-else و case/when لاتخاذ القرارات. لكن أحياناً نحتاج لشرط بسيط جداً ونريد كتابته بشكل مختصر. هنا يأتي دور العامل الثلاثي (Ternary Operator).

ما هو العامل الثلاثي؟

العامل الثلاثي هو طريقة مختصرة لكتابة جملة if-else بسيطة في سطر واحد. سُمي "ثلاثياً" لأنه يتكون من ثلاثة أجزاء:

مثال أساسي

الناتج:

كلا الطريقتين تعطي نفس النتيجة، لكن العامل الثلاثي أقصر بكثير.

البنية الأساسية

أو يمكن استخدامه مباشرة:

شرح الأجزاء الثلاثة

الجزءالوصفمثال
الشرطالتعبير الذي يُقيّم إلى true أو falseage >= 18
?الفاصل بين الشرط والنتيجة الصحيحة?
النتيجة إذا صحيحالقيمة التي تُرجع إذا كان الشرط true"بالغ"
:الفاصل بين النتيجتين:
النتيجة إذا خاطئالقيمة التي تُرجع إذا كان الشرط false"قاصر"

أمثلة عملية

مثال 1: التحقق من الإيجابية

الناتج:

مثال 2: زوجي أم فردي

الناتج:

مثال 3: القيمة المطلقة

الناتج:

مثال 4: رسالة ترحيب

الناتج:

مثال 5: تحديد السعر

الناتج:

استخدام العامل الثلاثي مع puts مباشرة

يمكن استخدام العامل الثلاثي داخل puts مباشرة:

الناتج:

مثال: عرض الحالة

الناتج:

العامل الثلاثي في String Interpolation

يمكن استخدامه داخل #{} في النصوص:

الناتج:

مثال: صيغة الجمع والمفرد

الناتج:

متى تستخدم العامل الثلاثي؟

استخدمه عندما:

  1. الشرط بسيط - شرط واحد بدون تعقيد
  2. النتيجتان قصيرتان - قيم بسيطة أو نصوص قصيرة
  3. تريد تعيين قيمة لمتغير - بناءً على شرط بسيط

لا تستخدمه عندما:

  1. الشرط معقد - يحتوي على && أو || متعددة
  2. النتيجة تتطلب عدة أسطر - شيفرة طويلة أو معقدة
  3. هناك أكثر من احتمالين - تحتاج elsif

المقارنة: العامل الثلاثي vs if-else

الميزةالعامل الثلاثيif-else
الإيجازممتاز (سطر واحد)يحتاج عدة أسطر
القراءةجيد للشروط البسيطةأوضح للشروط المعقدة
الشيفرة الطويلةغير مناسبمناسب
تعدد الشروطلا يدعميدعم (elsif)
تعيين متغيرمثاليجيد

تحويل if-else إلى عامل ثلاثي

مثال 1: تحويل بسيط

قبل (if-else):

بعد (عامل ثلاثي):

الناتج:

مثال 2: تحويل مع puts

قبل:

بعد:

الناتج:

مثال 3: تحويل مع حساب

قبل:

بعد:

الناتج:

تداخل العامل الثلاثي (تجنبه!)

تقنياً، يمكن تداخل العوامل الثلاثية، لكن هذا يجعل الشيفرة صعبة القراءة:

الناتج:

الأفضل: استخدم if-elsif-else أو case/when:

نصائح مهمة

  1. اجعله بسيطاً - العامل الثلاثي للشروط البسيطة فقط
  2. لا تتداخل - تجنب وضع عامل ثلاثي داخل آخر
  3. استخدم الأقواس عند الحاجة - للوضوح في التعبيرات المعقدة
  4. فكر في القراءة - إذا صعب فهمه، استخدم if-else
  5. مثالي للتعيين - أفضل استخدام له هو تعيين قيمة لمتغير

أمثلة إضافية

التحقق من القسمة على صفر

الناتج:

قيمة افتراضية

الناتج:

ملاحظة: يمكن استخدام || أيضاً للقيم الافتراضية: display_name = name || "زائر"

رسالة نجاح أو فشل

الناتج:

جدول ملخص

الصيغةالوصفمثال
شرط ? أ : بإرجاع أ إذا صحيح، ب إذا خاطئx > 0 ? "موجب" : "سالب"
متغير = شرط ? أ : بتعيين قيمة بناءً على شرطstatus = active ? "نشط" : "متوقف"
puts شرط ? أ : بطباعة قيمة بناءً على شرطputs ok ? "نعم" : "لا"
"#{شرط ? أ : ب}"استخدام داخل نص"#{x > 0 ? "+" : "-"}"

تمرين: تحويل if-else إلى عامل ثلاثي

حان وقت التطبيق! في محرر الشيفرة على اليسار:

المطلوب: حوّل الشيفرة التالي من if-else إلى عامل ثلاثي:

الشيفرة الأصلية:

  1. عرّف متغير number = 10
  2. استخدم العامل الثلاثي مع puts لطباعة "موجب" إذا كان الرقم أكبر من صفر، و"سالب أو صفر" إذا لم يكن

الناتج المتوقع:

تلميح: الصيغة هي: puts الشرط ? "النتيجة الأولى" : "النتيجة الثانية"


تذكّر: العامل الثلاثي أداة قوية لتبسيط الشروط البسيطة، لكن استخدم if-else للشروط المعقدة!