الشرح التفصيلي لـ assert
و Ternary Operator
في لغة Dart
أولًا: assert
في Dart
تُستخدم assert
للتحقق من صحة القيم أثناء عملية التطوير (debugging). إذا كان الشرط الممرر إلى assert
خطأ (false)، فإن البرنامج سيتوقف ويظهر خطأ. ولكن عند تشغيل التطبيق في وضع الإنتاج (release mode)، يتم تجاهل assert
.
الصيغة العامة لـ assert
dartنسختحريرassert(condition, optionalMessage);
condition
: الشرط الذي يتم التحقق منه، إذا كانfalse
سيتوقف التنفيذ.optionalMessage
: رسالة اختيارية تُطبع عند فشل التحقق، لتوضيح سبب الخطأ.
مثال على assert
dartنسختحريرvoid main() {
int age = 17;
// التأكد من أن العمر أكبر من أو يساوي 18
assert(age >= 18, "العمر يجب أن يكون 18 أو أكثر");
print("تم اجتياز الاختبار بنجاح!");
}
🔹 إذا كان age = 17
، فسيحدث خطأ أثناء التشغيل في وضع debug
، وسيظهر الخطأ:
pgsqlنسختحريرUnhandled exception: Assertion failed: العمر يجب أن يكون 18 أو أكثر
🔹 أما إذا كان age = 20
، فسيتم تنفيذ البرنامج بشكل طبيعي.
متى يتم استخدام assert
؟
- أثناء التطوير فقط، لا يُستخدم في بيئة الإنتاج.
- التحقق من صحة المدخلات أثناء البرمجة.
- التأكد من أن القيم تفي بالمتطلبات قبل استخدامها.
ثانيًا: Ternary Operator
(المعامل الثلاثي)
المعامل الثلاثي (Ternary Operator) هو اختصار لكتابة جملة if-else
في سطر واحد، مما يجعل الكود أكثر اختصارًا ووضوحًا.
الصيغة العامة للمعامل الثلاثي
dartنسختحريرcondition ? expressionIfTrue : expressionIfFalse;
condition
: الشرط الذي سيتم تقييمه.expressionIfTrue
: القيمة التي ستُعاد إذا كان الشرطtrue
.expressionIfFalse
: القيمة التي ستُعاد إذا كان الشرطfalse
.
مثال على Ternary Operator
dartنسختحريرvoid main() {
int age = 20;
String result = (age >= 18) ? "مسموح بالدخول" : "غير مسموح بالدخول";
print(result); // مسموح بالدخول
}
🔹 إذا كان age >= 18
، فستكون النتيجة “مسموح بالدخول”.
🔹 إذا كان age < 18
، فستكون النتيجة “غير مسموح بالدخول”.
مثال آخر مع الطباعة مباشرة
dartنسختحريرvoid main() {
int number = 10;
print(number % 2 == 0 ? "عدد زوجي" : "عدد فردي");
}
🔹 إذا كان number = 10
، فسيطبع “عدد زوجي”.
🔹 إذا كان number = 7
، فسيطبع “عدد فردي”.
استخدام Ternary Operator
داخل print
يمكنك استخدام المعامل الثلاثي داخل print
مباشرة:
dartنسختحريرvoid main() {
int score = 75;
print(score >= 50 ? "ناجح" : "راسب");
}
🔹 إذا كان score >= 50
، فسيطبع “ناجح”.
🔹 إذا كان score < 50
، فسيطبع “راسب”.
التداخل بين أكثر من Ternary Operator
يمكنك استخدام أكثر من شرط مع Ternary Operator
داخل بعضه:
dartنسختحريرvoid main() {
int number = 0;
String result = (number > 0) ? "عدد موجب" :
(number < 0) ? "عدد سالب" :
"صفر";
print(result); // صفر
}
🔹 إذا كان العدد موجبًا، فسيطبع “عدد موجب”.
🔹 إذا كان العدد سالبًا، فسيطبع “عدد سالب”.
🔹 إذا كان 0
، فسيطبع “صفر”.
الفرق بين assert
و Ternary Operator
الميزة | assert | Ternary Operator |
---|---|---|
الاستخدام | للتحقق من صحة القيم أثناء التطوير | لاختصار جملة if-else |
التأثير في الكود | يوقف تنفيذ البرنامج إذا كان الشرط false | لا يوقف التنفيذ بل يعيد قيمة |
متى يتم استخدامه؟ | أثناء التطوير فقط | في جميع الأوضاع |
يعمل في وضع release ؟ | ❌ لا يعمل | ✅ يعمل |
الخلاصة
✅ assert
تُستخدم لاختبار صحة القيم أثناء التطوير فقط، وتوقف التنفيذ عند فشل الشرط.
✅ Ternary Operator
تُستخدم لاختصار if-else
في سطر واحد، وتجعل الكود أكثر تنظيمًا ووضوحًا.
إذا كنت بحاجة إلى كود أكثر كفاءة واختصارًا، فاستخدم Ternary Operator
. أما إذا كنت بحاجة إلى فحص القيم أثناء التطوير، فاستخدم assert
. 🚀