Operator wymuszający wartość
Część sekcji Podstawy ścieżki Dart w Coddy. Lekcja 80 z 94.
Operator asercji niepustej wartości (!) informuje Dart, że zmienna dopuszczająca wartość null na pewno nie ma w tym miejscu kodu wartości null. Wymusza traktowanie typu dopuszczającego wartość null jako typu niedopuszczającego wartości null.
Utwórz zmienną tekstową, która może przyjmować wartość null:
String? name = 'Dart';
Użyj operatora asercji null, aby potraktować 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 faktycznie ma wartość null, program ulegnie awarii:
String? language = null;
// String nonNullable = language!; // To spowodowałoby awarię podczas działania programu
Wyzwanie
PoczątkującyW tym wyzwaniu poćwiczysz używanie operatora asercji null (!) 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 null do przekształcenia zmiennej username, która dopuszcza wartość null, w ciąg znaków, który nie dopuszcza wartości null i można go przypisać do displayName.
Oczekiwany wynik:
Welcome, DartLearner!Spróbuj swoich sił
void main() {
// Ta zmienna typu String, która może mieć wartość null, ma już wartość różną od null
String? username = 'DartLearner';
// TODO: Użyj operatora zapewnienia o niepustości (!) do konwersji 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