Menu
CoddyTech

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 אונליין