في البرمجة، تستخدم المشغلات (Operators) لأداء العمليات الحسابية والمقارنة والربط بين البيانات. ومن بين المشغلات الشائعة، المشغل الشرطي (Conditional Operator)، والمعروف أيضاً باسم المشغل الثلاثي (Ternary Operator).
المشغل الثلاثي هو مشغل يأخذ ثلاثة مدخلات، وينتج مخرجة واحدة. يتم استخدامه لاختبار شرط، وإذا كان الشرط صحيحًا، يتم إرجاع المخرجة الأولى، وإذا كان الشرط خاطئًا، يتم إرجاع المخرجة الثانية.
في السنوات الأخيرة، تم تقديم مشغل جديد يسمى Elvis operator. المشغل Elvis هو اختصار للمشغل الثلاثي، ويستخدم لاختبار ما إذا كانت قيمة معينة فارغة أم لا.
في هذا المقال، سنناقش الفرق بين Elvis operator و Ternary operator، وكيفية استخدامهما في البرمجة.
Ternary operator
المشغل الثلاثي هو مشغل يأخذ ثلاثة مدخلات، وينتج مخرجة واحدة. يتم استخدامه لاختبار شرط، وإذا كان الشرط صحيحًا، يتم إرجاع المخرجة الأولى، وإذا كان الشرط خاطئًا، يتم إرجاع المخرجة الثانية.
يمكن كتابة المشغل الثلاثي على النحو التالي:
condition ? expression1 : expression2
حيث أن:
condition هو الشرط الذي يتم اختباره.
expression1 هي المخرجة التي يتم إرجاعها إذا كان الشرط صحيحًا.
expression2 هي المخرجة التي يتم إرجاعها إذا كان الشرط خاطئًا.
على سبيل المثال، يمكن استخدام المشغل الثلاثي لتحديد ما إذا كان المستخدم مسجلاً دخوله أم لا:
$isLoggedIn = true;
$message = $isLoggedIn ? "مرحبًا، $username" : "يرجى تسجيل الدخول";
echo $message;
في هذا المثال، إذا كان المستخدم مسجلاً دخوله، فسيتم عرض الرسالة “مرحبًا، $username”. وإذا لم يكن المستخدم مسجلاً دخوله، فسيتم عرض الرسالة “يرجى تسجيل الدخول”.
Elvis operator
المشغل Elvis هو اختصار للمشغل الثلاثي. يتم استخدامه لاختبار ما إذا كانت قيمة معينة فارغة أم لا.
يمكن كتابة المشغل Elvis على النحو التالي:
value ?: defaultValue
حيث أن:
value هي القيمة التي يتم اختبارها.
defaultValue هي المخرجة التي يتم إرجاعها إذا كانت value فارغة.
على سبيل المثال، يمكن استخدام المشغل Elvis لتحديد ما إذا كانت سلسلة فارغة أم لا:
$name = "John Doe";
$displayName = $name ?: "Unknown";
echo $displayName;
في هذا المثال، إذا كانت name فارغة، فسيتم تعيين displayName إلى “Unknown”.
الفرق بين Elvis operator و Ternary operator
الفرق الرئيسي بين Elvis operator و Ternary operator هو أن Elvis operator لا يتطلب وجود القيمة الثانية في حالة أن القيمة الأولى غير فارغة.
في حالة المشغل الثلاثي، إذا كانت القيمة الأولى غير فارغة، فسيتم إرجاعها مباشرةً. أما إذا كانت القيمة الأولى فارغة، فسيتم الانتقال إلى القيمة الثانية.
أما في حالة المشغل Elvis، إذا كانت القيمة الأولى غير فارغة، فسيتم إرجاعها مباشرةً. ولن يتم النظر في القيمة الثانية.
استخدام Elvis operator و Ternary operator
يمكن استخدام Elvis operator و Ternary operator في مجموعة متنوعة من التطبيقات. فيما يلي بعض الأمثلة:
تحديد ما إذا كانت قيمة معينة فارغة أم لا.
تعيين قيمة افتراضية إذا كانت قيمة معينة فارغة.
تجنب اختبار الشرط مرتين.
الخاتمة
Elvis operator و Ternary operator هما مشغلان مفيدان يمكن استخدامهما لتحسين كفاءة وقابلية قراءة الكود. Elvis operator هو اختصار للمشغل الثلاثي، ويستخدم لاختبار ما إذا كانت قيمة معينة فارغة أم لا.