פונקציות
כחלק מגישת "אובייקטים לשלטון", גם פונקציות הן אובייקטים ויש להן סוג – Function. זאת אומרת בין היתר שניתן להעביר פונקציה כמשתנה.
דוגמה לפונקציה פשוטה:
bool isAhYakar (int money) {
if (money > 1000000) return true;
else return false;
}
פונקציות עובדות גם כשלא רושמים את הסוג המוחזר, אבל מה אתם עצלנים?
אם התשובה היא כן, תשמחו לשמוע שאפשר גם להשתמש בתחביר חץ כדי לקצר עוד יותר פונקציות שלהן רק ביטוי אחד:
bool isAhYakar(int money) => (money > 1000000)? true : false;
כמו בשפות נוספות, פונקציות יכולות לקבל שני סוגים של פרמטרים – הכרחיים ובחירתיים (required and optional). פרמטרים בחירתיים יבואו תמיד רק אחרי ההכרחיים, וניתן לתת להם ערכי ברירת מחדל. גם להם יש שני צורות: לפי מיקום או לפי שם (named and positional).
ההבדל הוא בכך שכשיש לנו יותר מפרמטר אופציונלי אחד (כן גם לי בחירתי נשמע קצת מוזר) – אם הכרזנו עליהם לפי מיקום, נהיה חייבים לקרוא להם לפי הסדר, וכמובן שלא נוכל להשמיט פרמטרים מסוימים.
כשהם מוכרזים לפי השם שלהם ניתן לקרוא להם איך שרוצים, ובאופן כללי מתקבל קוד קריא יותר. (כדאי לציין שFlutter משתמשת רק בפרמטרים לפי שם, גם כשהם חובה, אבל זה לא הנושא כעת).
void getNumPositional(int count, {int optional1, String optional2}) {
...
}
void getNumNamed(int count, [int optional1, String optional2]) {
...
}
getNumPositional(50,7,'Adam');
getNumNamed(50,optional1: 8, optional2: 'Eve');
(הערה: שמתם לב שבכותרת כתוב פוקנציות במקום פונקציות?)
פרמטרים יכולים להיות לפי שם או לפי מיקום, אבל לא גם וגם.
פונקציות אנונימיות
