Podsumowanie — bezpieczna obsługa wartości null
Część sekcji Podstawy ścieżki Dart w Coddy. Lekcja 82 z 94.
Wyzwanie
ŁatwyTworzysz system profili użytkowników dla aplikacji mobilnej. Utwórz klasę UserProfile, która zademonstruje Twoje zrozumienie funkcji bezpieczeństwa null w Dart.
Zaimplementuj klasę UserProfile z następującymi elementami:
- Właściwości, które nie mogą przyjmować wartości null (zawsze muszą mieć wartość):
idtypuintcreatedDatetypuString
- Właściwości, które mogą przyjmować wartość null (mogą mieć wartość null podczas inicjalizacji):
nametypuString?emailtypuString?agetypuint?
- Właściwość inicjalizowana z opóźnieniem:
displayNametypuString, zadeklarowana z użyciem słowa kluczowegolate
- Konstruktor:
- Przyjmuje
idicreatedDatejako wymagane parametry - Inicjalizuje
displayNamewartością"Guest"
- Przyjmuje
Metoda:
<strong>void printProfile()</strong>Wyświetla profil użytkownika w następującym formacie:User Profile: ID: <id> Created: <createdDate> Name: <name or 'Not provided'> Email: <email or 'Not provided'> Age: <age or 'Not provided'> Display Name: <displayName> -------------------- Metoda:
<strong>void updateEmail(String? newEmail)</strong>- Aktualizuje właściwość
emailnową wartością.
- Aktualizuje właściwość
- Metoda:
<strong>String getDisplayName()</strong>- Jeśli
namenie ma wartości null, przypisujedisplayName = name!(używając operatora asercji null) - Zwraca bieżącą wartość
displayName
- Jeśli
Ważne: Po zaktualizowaniu właściwości name musisz wywołać getDisplayName(), aby zaktualizować pole displayName przed ponownym wyświetleniem profilu.
Uzupełnij kod, aby utworzyć profil, zaktualizować go i wyświetlić informacje zgodnie z oczekiwanym wynikiem.
Spróbuj swoich sił
void main() {
// Utwórz profil użytkownika
final profile = UserProfile(1, 'today');
// Wyświetl początkowy profil
profile.printProfile();
// Zaktualizuj profil
profile.name = 'John Doe';
profile.updateEmail('john@example.com');
profile.age = 30;
// Zaktualizuj nazwę wyświetlaną i wyświetl zaktualizowany profil
profile.getDisplayName(); // Wywołaj tę metodę, aby zaktualizować displayName
profile.printProfile();
}
class UserProfile {
// TODO: Dodaj właściwości (id, createdDate, name, email, age, displayName)
// TODO: Utwórz konstruktor
// TODO: Zaimplementuj metodę printProfile()
// TODO: Zaimplementuj metodę updateEmail()
// TODO: Zaimplementuj metodę getDisplayName()
}Wszystkie lekcje w sekcji Podstawy
4Operatory – część 2
Operatory porównaniaLogiczne ANDLogiczne ORLogiczne NOTOperatory sprawdzania typuPodsumowanie – porównywanie7Praca z ciągami znaków
Łączenie ciągów znakówInterpolacja ciągów znakówCiągi wielolinioweWłaściwości ciągów znakówPodstawowe metody ciągów znaków10Kolekcje — podstawy map
Czym są mapy?Tworzenie mapyDostęp do wartości za pomocą kluczaPary klucz-wartośćPobieranie rozmiaru mapyPobieranie kluczyPobieranie wartościSprawdzanie, czy klucz istnieje13Bezpieczeństwo wartości null w szczegółach
Zrozumienie wartości nullTypy dopuszczające nullTypy niedopuszczające nullOperator wymuszający wartośćInicjalizacja opóźnionaPodsumowanie — bezpieczna obsługa wartości null2Zmienne i podstawowe typy danych
Czym są zmienne?Łańcuchy znakówLiczby całkowite (int)Liczby zmiennoprzecinkowe (double)Wartości logiczne (bool)Wnioskowanie o typie za pomocą „var”Zmienne finalZmienne stałeKonwencje nazewnictwaPodstawowe bezpieczeństwo nullPodsumowanie — deklarowanie zmiennych8Przepływ sterowania — pętle
Pętla „for”Pętla „while”Pętla „do-while”Używanie „break” w pętlachUżywanie „continue” w pętlachPodsumowanie — powtarzanie kodu3Operatory, część 1
Operatory arytmetyczneDzielenie całkowiteOperator moduloInkrementacja i dekrementacjaSkrócone operatory przypisaniaPodsumowanie — proste obliczenia6Sterowanie przepływem — podejmowanie decyzji
Instrukcja „if”Instrukcja „else”Instrukcja „else if”Podsumowanie — proste decyzjeZagnieżdżone instrukcje „if”Instrukcja „switch”9Kolekcje — podstawy list
Czym są listy?Tworzenie listyDostęp według indeksuPobieranie długości listyDodawanie elementówUsuwanie elementówSprawdzanie, czy lista jest pustaIterowanie po liście12Funkcje zaawansowane
Opcjonalne parametry pozycyjneParametry nazwaneWymagane parametry nazwaneDomyślne wartości parametrówPodsumowanie — parametry funkcji15Projekt: Prosty kalkulator
KonfiguracjaDeklarowanie liczbyPoćwicz samodzielnie: Kompilator Dart online