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")אתגר
קלהתוכנית קוראת שורה אחת של ציונים המופרדים בפסיקים ושומרת אותם במערך numbers. החלק הזה כבר כתוב.
הדפס שתי שורות:
Any perfect:ואחריוtrueאם לפחות ציון אחד הוא100, אחרתfalseAll 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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמיד11פונקציות מסדר גבוה
מתודת mapמתודת filterמתודת reduceany ו-allחזרה: מאמת כתובות אימיילחזרה: מעבד מספריםתרגלו בעצמכם: קומפיילר GDScript אונליין