פונקציות אנונימיות
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 44 מתוך 65.
עד עכשיו יצרת פונקציות עם שמות כמו calculateTotal או printMessage. אבל לפעמים צריך פונקציה פשוטה למשימה ספציפית אחת בלבד, ומתן שם לה מרגיש מיותר. כאן פונקציות אנונימיות מועילות.
פונקציה אנונימית היא פונקציה ללא שם. מגדירים אותה בדיוק במקום שבו צריך אותה, וכך הקוד שלך תמציתי יותר עבור פעולות קצרות וחד-פעמיות. התחביר פשוט: פשוט כותבים את רשימת הפרמטרים ואחריה את גוף הפונקציה:
(parameter) {
// גוף הפונקציה
}פונקציות אנונימיות שימושיות במיוחד עם מתודות של רשימות. לדוגמה, במקום ליצור פונקציה נפרדת בעלת שם כדי להדפיס כל פריט ברשימה, אפשר להשתמש ישירות בפונקציה אנונימית עם המתודה forEach:
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});הגישה הזו שומרת על הקוד שלך נקי וממוקד, במיוחד כשהלוגיקה של הפונקציה פשוטה ולא יהיה בה שימוש חוזר במקום אחר בתוכנית שלך.
אתגר
קלצרו תוכנית שמעבדת רשימה של שמות עובדים באמצעות פונקציות אנונימיות. התוכנית שלכם תדגים כיצד להשתמש בפונקציות אנונימיות עם השיטה forEach כדי לבצע פעולות שונות על כל איבר ברשימה.
- קראו מחרוזת קלט שמכילה שמות עובדים המופרדים בפסיקים (לדוגמה,
"Alice,Bob,Charlie,Diana") - פצלו את מחרוזת הקלט לרשימה של שמות נפרדים באמצעות השיטה
split() - השתמשו בשיטה
forEachעם פונקציה אנונימית כדי להדפיס כל שם עובד עם הודעת ברכה - השתמשו בשיטה
forEachעם פונקציה אנונימית נוספת כדי להדפיס כל שם עובד באותיות גדולות - השתמשו בשיטה
forEachעם פונקציה אנונימית שלישית כדי להדפיס כל שם עובד לצד מספר התווים שבו
לדוגמה, אם הקלט הוא "Alice,Bob,Charlie", התוכנית שלכם צריכה להציג:
Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 charactersאם הקלט הוא "John,Sarah", התוכנית שלכם צריכה להציג:
Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 charactersהתוכנית שלכם חייבת להשתמש בשלוש קריאות נפרדות לשיטה forEach, כשכל אחת מהן משתמשת בפונקציה אנונימית משלה. יש להגדיר את הפונקציות האנונימיות בתוך השורה, בלי לתת להן שמות. כל פונקציה אנונימית צריכה לקבל פרמטר יחיד שמייצג את שם העובד הנוכחי ולבצע את הפעולה שצוינה. השתמשו באינטרפולציה של מחרוזות כדי לעצב את הודעות הפלט בדיוק כפי שהן מוצגות למעלה.
נסו בעצמכם
import 'dart:io';
void main() {
// קראו את מחרוזת הקלט המכילה שמות עובדים
String? input = stdin.readLineSync();
// פצלו את הקלט לרשימת שמות
List<String> employeeNames = input!.split(',');
// הדפיסו את הודעת העיבוד הראשונית
print('Processing employee list: $input');
print('===========================================');
// TODO: כתבו את הקוד שלכם למטה
// השתמשו ב-forEach עם פונקציות אנונימיות כדי:
// 1. להדפיס הודעות ברכה
// 2. להדפיס שמות באותיות גדולות
// 3. להדפיס את אורכי השמות
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1מניפולציות מתקדמות ברשימות
מאפייני רשימה: ראשון ואחרוןמצב הרשימה: isEmpty ו-isNotEmpהיפוך רשימההוספה לרשימה: insertהסרת פריטים מרשימה: removeWhereחיפוש ברשימה: indexOfמיון רשימהערבוב רשימהסיכום – מארגן רשימות4מניפולציה מתקדמת של Map
מעבר על Mapבדיקה אם מפתחות וערכים קיימיםמאפייני Map: מפתחות וערכיםהוספה מותנית: putIfAbsentהסרת רשומות מ־MapMaps מקונניםסיכום – עדכון מלאי7פונקציות מתקדמות
פונקציות אנונימיותהעברת פונקציות כארגומנטיםהבנת סגירותמבוא לרקורסיהפונקציה רקורסיבית: ספירה לאחורפונקציה רקורסיבית: עצרתחזרה: מעבד רשימות2פעולות פונקציונליות על רשימות
טרנספורמציה באמצעות 'map'סינון באמצעות 'where'שימוש ב-'.toList()'בדיקת תנאים באמצעות 'any'תנאים באמצעות 'every'איתור באמצעות 'firstWhere'סיכום – סינון נתונים5פרויקט: חישוב עגלת קניות
הגדרת הפרויקטהוספת פריטים לעגלה3קבוצות
מהי קבוצה?יצירת קבוצההוספה והסרה מקבוצותבדיקת נוכחות של איברים בקבוצההמרת רשימה לקבוצהאיחוד קבוצותחיתוך קבוצותהפרש קבוצותסיכום – רשימת אורחים ייחודית6טיפול בסיסי בשגיאות
מהן חריגות?בלוק ה-try-catchתפיסת חריגות באמצעות onבלוק ה-finallyהשלכת חריגהסיכום – חלוקה בטוחה9טיפוסי מנייה (Enums)
מה הם Enums?הגדרת Enum פשוטשימוש ב-Enums במשתניםEnums במשפטי 'switch'סיכום – רמזורתרגלו בעצמכם: קומפיילר Dart אונליין