التقييم قصير الدائرة
جزء من قسم الأساسيات في رحلة Lua على Coddy. الدرس 23 من 90.
عندما يقيّم Lua العاملين and وor، فإنه يستخدم قاعدة تُسمّى التقييم بالتوقف المبكر. وهذا يعني أن Lua يتوقف عن التقييم بمجرد أن يعرف النتيجة النهائية، وقد يتجاوز أجزاءً من التعبير بالكامل.
بالنسبة إلى عامل and، إذا كان الشرط الأول هو false، يعرف Lua فورًا أن التعبير بأكمله سيكون false دون التحقق من الشرط الثاني:
playerAlive = false
hasWeapon = true
canFight = playerAlive and hasWeapon
-- تتحقق Lua من playerAlive (false) فقط، ولا تقيّم hasWeapon أبدًاوبالمثل، بالنسبة إلى العامل or، إذا كان الشرط الأول هو true، تعرف Lua أن النتيجة ستكون true وتتخطى الشرط الثاني:
hasKey = true
hasPassword = false
canEnter = hasKey or hasPassword
-- تتحقق Lua من hasKey (true) فقط، ولا تقيّم hasPassword مطلقًالا يقتصر الاختصار عند التقييم على توفير الجهد، بل يحدد أيضًا أيّ شيفرة تُنفَّذ. هنا، لا يكون الفحص الثاني آمنًا إلا لأن Lua تتخطاه عندما تكون lives مساويةً لـ nil:
lives = nil -- لا توجد قيمة بعد
canPlay = lives ~= nil and lives > 0
print(canPlay) -- falseمن دون الاختصار عند التقييم، سيوقف lives > 0 البرنامج بخطأ، لأن nil لا يمكن مقارنتها بعدد. ستستخدم هذا كثيرًا: تحقّق من وجود قيمة قبل استخدامها.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات 2: العمليات العلائقية والمنطقية
معاملات التساويالمعاملات العلائقيةالمعامل 'and'المعامل 'or'المعامل 'not'التقييم قصير الدائرةقيم Truthy و Falsyمراجعة - المنطق البسيط10الجداول الجزء 1: نمط القائمة
ما هو الجدول؟إنشاء جدولالوصول إلى العناصر عبر الفهرستعديل العناصر عبر الفهرسمعامل الطول '#'table.insert()table.remove()ملخص - إدارة أعضاء الفريق13مشروع: متجر جرعات بسيط
إعداد المشروعإضافة جرعة2المتغيرات وأنواع البيانات
ما هو المتغير؟الأرقامالسلاسل النصيةالقيم المنطقيةالقيمة 'nil'الدالة type()قواعد التسميةمراجعة - ملف الشخصية5الإخراج الأساسي
طباعة القيم الحرفيةطباعة المتغيراتطباعة قيم متعددةدمج النصوص والمتغيراتدالة tostring()الإدخال (Input)التحويل (Cast)مراجعة - تقرير الحالةمراجعة - حتى 1208أساسيات معالجة النصوص
string.len()string.upper و string.lowerstring.sub()string.rep()string.find()مراجعة - تنسيق اسم المستخدم3المعاملات 1: العمليات الحسابية والدمج
المعاملات الحسابيةمعامل باقي القسمةمعامل الأسدمج النصوصأولوية المعاملاتملخص - حسابات بسيطة6مشروع: عرض إحصائيات الشخصية
رسالة ترحيبتعريف إحصائيات الشخصية9أساسيات الدوال
تعريف دالةاستدعاء دالةدوال مع معاملاتدوال بمعاملات متعددةجملة 'return'مراجعة - حاسبة المساحة12أساسيات الحلقات التكرارية
حلقة whileحلقة repeat-untilحلقة for الرقميةحلقة for مع خطوةجملة 'break'مراجعة - العد التنازليتدرّب بنفسك: مترجم Lua عبر الإنترنت