בטיחות בסיסית מול null
חלק מהיחידה יסודות במסלול ה-Dart של Coddy. שיעור 14 מתוך 94.
בטיחות מפני ערכי null עוזרת למנוע קריסות בלתי צפויות של האפליקציה באמצעות שליטה במשתנים שיכולים להיות ריקים (null).
כברירת מחדל, משתנים חייבים להכיל ערך:
void main() {
String name = 'Dart';
print(name); // פלט: Dart
// זה יגרום לבעיות:
// name = null; // לא מותר
}הוסף ? אחרי הטיפוס כדי לאפשר ערכי null:
void main() {
String? name = 'Dart';
print(name); // פלט: Dart
// עכשיו אפשר להציב null
name = null;
print(name); // פלט: null
}אפשר להצהיר על משתנים שיכולים לקבל ערך null מכל סוג:
void main() {
int? age; // אין ערך התחלתי, ערך ברירת המחדל הוא null
double? price = 19.99;
bool? isAvailable = true;
print(age); // פלט: null
print(price); // פלט: 19.99
print(isAvailable); // פלט: true
// אפשר לשנות כל אחד מאלה ל-null
price = null;
isAvailable = null;
}
בטיחות ערכי null עוזרת להגן על האפליקציה שלך מפני קריסות בלתי צפויות שמתרחשות כשהקוד שלך מנסה להשתמש בערכי null בפעולות.
אתגר
מתחיליםצרו תוכנית ב-Dart שמדגימה בטיחות null בסיסית באמצעות האופרטור ?:
- הכריזו על משתנה מסוג String בשם
usernameוהגדירו אותו ל-nullבאמצעות אופרטור בטיחות ה-null?(String?) - הכריזו על משתנה מסוג int בשם
userAgeוהגדירו אותו ל-nullבאמצעות אופרטור בטיחות ה-null - הדפיסו את שני המשתנים עם תוויות בפורמט המדויק הבא:
Username: null
User age: nullלאחר מכן:
- הקצו את הערך
"DartLearner"למשתנהusername - הקצו את הערך
25למשתנהuserAge - הדפיסו שוב את שני המשתנים באותו פורמט מדויק כמו קודם
הפלט שלכם חייב להתאים בדיוק לפורמט שמוצג למעלה.
נסו בעצמכם
void main() {
// הכריזו כאן על המשתנים שלכם שיכולים להכיל null
String? username = ?;
int? userAge = ?;
// הדפיסו את הערכים ההתחלתיים עם תוויות
print("Username: " + username.toString());
print("User age: " + userAge.toString());
// הקצו ערכים חדשים למשתנים
username = ?;
userAge = ?;
// הדפיסו את הערכים המעודכנים עם אותן תוויות
print("Username: " + username.toString());
print("User age: " + userAge.toString());
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
7עבודה עם מחרוזות
שרשור מחרוזותאינטרפולציה של מחרוזותמחרוזות מרובות שורותמאפייני מחרוזותשיטות בסיסיות למחרוזות10אוספים - יסודות המפות
מהן מפות?יצירת מפהגישה לערכים לפי מפתחזוגות מפתח-ערךקבלת גודל המפהקבלת המפתחותקבלת הערכיםבדיקה אם מפתח קיים2משתנים וטיפוסי נתונים בסיסיים
מהם משתנים?מחרוזותמספרים שלמים (int)מספרים מסוג double (double)ערכים בוליאניים (bool)הסקת טיפוס באמצעות 'var'משתנים סופייםמשתנים קבועיםמוסכמות למתן שמותבטיחות בסיסית מול nullסיכום – הכרזה על משתנים8זרימת בקרה – לולאות
לולאת 'for'לולאת 'while'לולאת 'do-while'שימוש ב-'break' בלולאותשימוש ב-'continue' בלולאותסיכום – חזרה על קוד3אופרטורים חלק 1
אופרטורים אריתמטייםחלוקת מספרים שלמיםאופרטור מודולוהגדלה והקטנהקיצורי השמהסיכום - חישובים פשוטים6זרימת בקרה - קבלת החלטות
הוראת 'if'הוראת 'else'הוראת 'else if'חזרה - החלטות פשוטותהוראות 'if' מקוננותהוראת 'switch'9אוספים - יסודות הרשימות
מהן רשימות?יצירת רשימהגישה לפי אינדקסקבלת אורך הרשימההוספת איבריםהסרת איבריםבדיקה אם הרשימה ריקהמעבר על רשימהתרגלו בעצמכם: קומפיילר Dart אונליין