توفّر Swift نوعًا مدمجًا يُسمى Bool لتمثيل قيم الصواب: true و false.
توفّر Swift ثلاثة عوامل منطقية (! و && و ||) لدمج التعبيرات المنطقية وتقييمها.
&&)لا يُرجع معامل and (&&) القيمة true إلا إذا كان الطرفان true.
وإذا كان أحد الطرفين false، فإنه يُرجع false.
ضع تعبيرًا أو قيمة منطقية على كل جانب من جانبي الرمز &&:
true && true // true
true && false // false
||)يُرجع معامل or (||) القيمة true إذا كان أحد الطرفين على الأقل true.
ولا يُرجع false إلا عندما يكون الطرفان false.
ضع تعبيرًا أو قيمة منطقية على كل جانب من جانبي الرمز ||:
true || true // true
true || false // true
false || false // false
!)يعكس معامل not (!) القيمة المنطقية.
فيُرجع true إذا كانت القيمة false، ويُرجع false إذا كانت القيمة true.
ضع معامل ! مباشرةً قبل القيمة أو التعبير:
!true // false
!false // true
())يمكنك استخدام الأقواس الهلالية لتجميع التعبيرات والتحكم في ترتيب التقييم. في Swift، تُقيَّم التعبيرات داخل الأقواس الهلالية أولًا:
true && false && false || true // true
true && false && (false || true) // false
كما يحدد التجميع بالأقواس الهلالية كيفية تطبيق معامل NOT على التعبيرات المركبة:
!true && false // false (evaluates (!true) first, then false && false)
!(true && false) // true (evaluates (true && false) first to false, then !false)
استخدم الأقواس الهلالية عندما تحتاج إلى توضيح ترتيب التقييم أو جعل الشروط المركبة أسهل في القراءة. وتجنّب إضافة أقواس هلالية غير ضرورية عندما تكون أولوية التقييم الافتراضية واضحة بالفعل.
أنت في طور تطوير اللعبة الجديدة المحبوبة Wings Quest. في اللعبة، أنت طائر يتحرك هنا وهناك ويجمع البذور. يفوز اللاعب عندما يلتقط كل البذور. إذا لامس اللاعب نسرًا، فسيخسر كل بذوره ويخسر اللعبة. وهناك استثناء لهذه القاعدة: يمكن أن يكون لدى اللاعب تعزيز نشط يجعله يطير أعلى من الطيور الأخرى.
هدفك هو كتابة بعض القواعد التي ستُستخدم في اللعبة.
في اللعبة، يحصل الطائر على نقاط إضافية إذا لامس نسرًا أثناء امتلاكه تعزيزًا نشطًا.
عرّف الدالة bonusPoints(powerUpActive:touchingEagle:) التي تأخذ وسيطين: powerUpActive الذي يحدّد ما إذا كان لدى الطائر تعزيز نشط، والوسيط touchingEagle الذي يحدّد ما إذا كان الطائر يلامس نسرًا.
يجب أن تُرجع الدالة true فقط إذا كان لدى الطائر تعزيز نشط وكان يلامس نسرًا، وأن تُرجع false فيما عدا ذلك.
bonusPoints(powerUpActive: false, touchingEagle: true)
// Returns false
في اللعبة، يحصل اللاعب على نقاط عند التقاط بذرة أو تعزيز.
عرّف الدالة score(touchingPowerUp:touchingSeed:) التي تأخذ وسيطين: touchingPowerUp الذي يحدّد ما إذا كان الطائر يلامس تعزيزًا، والوسيط touchingSeed الذي يحدّد ما إذا كان الطائر يلامس بذرة.
يجب أن تُرجع الدالة true إذا كان الطائر يلامس تعزيزًا أو بذرة، وأن تُرجع false فيما عدا ذلك.
score(touchingPowerUp: true, touchingSeed: true)
// Returns true
عرّف الدالة lose(powerUpActive:touchingEagle:) التي تأخذ وسيطين: powerUpActive الذي يحدّد ما إذا كان لدى الطائر تعزيز نشط، والوسيط touchingEagle الذي يحدّد ما إذا كان الطائر يلامس نسرًا.
يجب أن تُرجع الدالة true إذا كانت الشخصية تلامس نسرًا وليس لديها تعزيز نشط، وأن تُرجع false فيما عدا ذلك.
lose(powerUpActive: false, touchingEagle: true)
// Returns true
عرّف الدالة win(hasPickedUpAllSeeds:powerUpActive:touchingEagle:) التي تأخذ الوسائط التالية:
hasPickedUpAllSeeds إذا كان الطائر قد التقط كل البذور.powerUpActive إذا كان لدى الطائر تعزيز نشط.touchingEagle إذا كان الطائر يلامس نسرًا.يجب أن تُرجع الدالة true إذا جمع الطائر كل البذور ولم يخسر وفقًا للوسائط المعرّفة في الجزء 3، وأن تُرجع false فيما عدا ذلك.
win(hasPickedUpAllSeeds: false, powerUpActive: true, touchingEagle: false)
// Returns false
سجّل في Exercism لتتعلّم وتتقن Swift عبر 35 مفهومًا116 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.