Menu
CoddyTech
flag Ar iconالعربيةdown icon

any و all

جزء من قسم المنطق وتدفّق التنفيذ في رحلة GDScript على Coddy. الدرس 63 من 78.

يطرح any() وall() سؤالًا إجابته نعم أو لا حول مصفوفة كاملة. ويأخذ كلٌّ منهما دالة تُرجع true أو false لعنصر واحد:

  • تُرجع any() القيمة true إذا أعادت الدالة القيمة true لعنصر واحد على الأقل.
  • تُرجع all() القيمة true إذا أعادت الدالة القيمة true لكل عنصر.
var enemy_hp = [30, 0, 12]
print(enemy_hp.any(func(hp): return hp == 0))
print(enemy_hp.all(func(hp): return hp > 0))
true
false

لدى أحد الأعداء 0 من نقاط الصحة، لذا تكون any() true، والعدو نفسه يجعل all() false.

كلاهما يتوقف فور معرفة الإجابة: تتوقف any() عند أول true، وتتوقف all() عند أول false. وهما يعملان أيضًا مع الدوال المسماة، مثل numbers.all(is_even).

في المصفوفة الفارغة، تُرجع any() القيمة false، لأنه لا يوجد أي عنصر يحقق الشرط، وتُرجع all() القيمة true، لأنه لا يوجد أي عنصر لا يحقق الشرط.

استخدمها في شرط بدلًا من حلقة مع متغير راية:

var inventory = ["sword", "key", "rope"]
if inventory.any(func(item): return item == "key"):
	print("The door opens")
challenge icon

التحدي

سهل

يقرأ البرنامج سطرًا واحدًا من الدرجات مفصولة بفواصل ويخزنها في المصفوفة numbers. هذا الجزء مكتوب بالفعل.

اطبع سطرين:

  1. Any perfect: متبوعًا بـ true إذا كانت درجة واحدة على الأقل تساوي 100، وإلا false
  2. All passed: متبوعًا بـ true إذا كانت كل الدرجات 50 أو أكثر، وإلا false

استخدم any() للسطر الأول وall() للسطر الثاني. بالنسبة إلى الإدخال 100,75,40، يكون الناتج:

Any perfect: true
All passed: false

جرّب بنفسك

extends Node

func _ready():
	var numbers := []
	for part in OS.read_string_from_stdin().split(","):
		numbers.append(int(part))
	# اطبع السطرين باستخدام any() وall()
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفّق التنفيذ

تدرّب بنفسك: مترجم GDScript عبر الإنترنت