Lambda עם פרמטרים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C++ של Coddy. שיעור 43 מתוך 56.
עכשיו, כשאתם מבינים את תחביר הלמבדה הבסיסי, בואו נהפוך את הלמבדה לשימושית יותר באמצעות הוספת פרמטרים. בדיוק כמו פונקציות רגילות, למבדות יכולות לקבל ערכי קלט כדי לעבוד איתם.
כדי להוסיף פרמטרים ל-lambda, מקמו אותם בתוך הסוגריים אחרי סעיף הלכידה:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // מדפיס: Sum: 8אפשר גם לקרוא למבדה עם פרמטרים מיד, בלי לשמור אותה:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // מדפיס: Product: 28היכולת הזו לקבל פרמטרים הופכת פונקציות למבדא לגמישות ולשימושיות חוזרת הרבה יותר, ומאפשרת לך ליצור פונקציות קטנות שיכולות לעבד ערכי קלט שונים בכל פעם שקוראים להן.
אתגר
קלצרו תוכנית שמדגימה ביטויי למבדה עם פרמטרים, באמצעות בניית מחשבון פשוט שמבצע פעולות מתמטיות שונות. אתגר זה יבחן את הבנתכם כיצד להגדיר ביטויי למבדה שמקבלים ערכי קלט ועובדים איתם.
הקלטים הבאים יסופקו:
- שני מספרים שלמים
num1ו-num2שמייצגים את המספרים לחישובים - תו
operationשמייצג את הפעולה המתמטית לביצוע
על התוכנית שלכם:
- ליצור ביטוי למבדה בשם
addשמקבל שני פרמטרים של מספרים שלמים ומדפיס את סכומם בפורמטSum: [result] - ליצור ביטוי למבדה בשם
subtractשמקבל שני פרמטרים של מספרים שלמים ומדפיס את ההפרש ביניהם בפורמטDifference: [result] - ליצור ביטוי למבדה בשם
multiplyשמקבל שני פרמטרים של מספרים שלמים ומדפיס את מכפלתם בפורמטProduct: [result] - לקרוא את שני המספרים ואת תו הפעולה מהקלט
- בהתאם לתו הפעולה, לקרוא למבדה המתאימה עם שני המספרים
תו הפעולה יהיה אחד מאלה:
+לחיבור (לקרוא למבדהadd)-לחיסור (לקרוא למבדהsubtract)*לכפל (לקרוא למבדהmultiply)
השתמשו בפורמט הפלט המדויק הבא בהתאם לפעולה:
לחיבור:
Sum: [result]לחיסור:
Difference: [result]לכפל:
Product: [result]זכרו שפרמטרים של למבדה מוגדרים בתוך הסוגריים שאחרי סעיף הלכידה, באותו תחביר כמו פרמטרים של פונקציה רגילה. אחסנו כל למבדה במשתנה באמצעות מילת המפתח auto, ואז קראו למבדה המתאימה בהתאם לתו הפעולה שבקלט באמצעות משפט if-else או משפט switch.
נסו בעצמכם
#include <iostream>
using namespace std;
int main() {
// קראו את הקלט
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: צרו ביטויי למבדה לפעולות חיבור, חיסור וכפל
// TODO: השתמשו במשפט if-else או switch כדי לקרוא ללמבדה המתאימה לפי הפעולה
return 0;
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מצביעים וזיכרון
מהו מצביע?אופרטור קבלת כתובתאופרטור ביטול הפניהמצביעי Nullמצביעים ומערכיםזיכרון דינמי באמצעות 'new'שחרור זיכרון באמצעות 'delete'סיכום — תרגול מצביעים4מפות (זוגות מפתח-ערך)
היכרות עם std::mapיצירת מפהגישה לערכים ושינויםבדיקה אם מפתחות קיימיםהסרת זוגותמעבר על מפהסיכום – שכיחות מילים7פונקציות מתקדמות
העברה לפי הפניהמבוא לביטויי LambdaLambda עם פרמטריםLambda עם ערכי החזרהמבוא לרקורסיהעצרת רקורסיביתמיון באמצעות Lambda2וקטורים (מערכים דינמיים)
היכרות עם std::vectorיצירת וקטורהוספת איבריםגישה לאיבריםגודל הווקטורמעבר על איברים באמצעות לולאת forלולאת for מבוססת טווחהסרת איבריםסיכום — פעולות על וקטורים5פרויקט: כלי לניהול מלאי
הגדרת הפרויקטהוספה ועדכון של פריטיםתרגלו בעצמכם: קומפיילר C++ אונליין