Operator wymuszający wartość
Część sekcji Podstawy ścieżki Dart w Coddy. Lekcja 80 z 94.
Operator asercji wartości null (!) informuje Dart, że zmienna dopuszczająca wartość null na tym etapie kodu na pewno nie ma wartości null. Wymusza traktowanie typu dopuszczającego wartość null jako typu, który jej nie dopuszcza.
Utwórz zmienną typu łańcuchowego, która może mieć wartość null:
String? name = 'Dart';
Użyj operatora asercji nullowalności, aby traktować ją jako nieprzyjmującą wartości null:
String nonNullableName = name!;
print(nonNullableName);
Po wykonaniu powyższego kodu wynikiem będzie:
DartUważaj! Jeśli zmienna ma wartość null, program ulegnie awarii:
String? language = null;
// String nonNullable = language!; // Spowodowałoby to błąd podczas działania programu
Wyzwanie
PoczątkującyW tym wyzwaniu poćwiczysz używanie operatora asercji niepustości (!) w Dart. Ten operator informuje Dart, że w określonym miejscu kodu zmienna dopuszczająca wartość null na pewno nie ma wartości null.
Uzupełnij poniższy kod, aby użyć operatora asercji niepustości do przekształcenia zmiennej username, która dopuszcza wartość null, w ciąg znaków, który nie dopuszcza wartości null i który można przypisać do displayName.
Oczekiwany wynik:
Welcome, DartLearner!Spróbuj swoich sił
void main() {
// Ta zmienna typu String dopuszczająca null ma już wartość różną od null
String? username = 'DartLearner';
// TODO: Użyj operatora potwierdzenia wartości różnej od null (!) do przekonwertowania username
// z typu String dopuszczającego null na typ String niedopuszczający null
// aby można było przypisać ją do displayName
String displayName;
// To wyświetli wiadomość powitalną
print('Welcome, $displayName!');
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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