Bezpieczne odczyty z map
Część sekcji Logika i przepływ danych ścieżki Kotlin w Coddy. Lekcja 2 z 63.
map[key] zwraca wartość, która może być null, ponieważ klucza może nie być. Użyj operatora Elvis, aby podać wartość zastępczą. Zapisane zero różni się od brakującej wartości. Dostęp tylko do odczytu nie oznacza głębokiej niezmienności.
Wewnątrz main:
val stock = mapOf("pen" to 0)
println(stock["book"] ?: -1)Klucza book nie ma, więc wynik null wybiera wartość zastępczą.
Brakujący klucz zwraca null; wartość zastępcza operatora Elvis jest używana tylko dla null.
Wyzwanie
ŚredniUzupełnij lookupStock, używając parametrów stock: Map<String, Int>, key: String. Zwróć stan magazynowy dla podanego klucza lub -1, jeśli go nie ma. Wartości stanu magazynowego są nieujemne.
O ile powyżej nie podano bardziej restrykcyjnych ograniczeń, kolekcje zawierają najwyżej 100 elementów na każdym poziomie, a argumenty całkowite i całkowite wartości w kolekcjach mieszczą się w przedziale od -1000 do 1000. Tekst dostarczony do parsowania może zawierać nieprawidłowe lub wykraczające poza zakres reprezentacje, zgodnie z opisem.
Zwróć wartość typu Int. Zachowaj dostarczony kod wejścia/wyjścia. Odczytuje on argumenty skalarne po jednym w wierszu; lista zaczyna się od liczby elementów, po której następują jej elementy, a mapa zaczyna się od liczby wpisów, po której następują kolejne klucze i wartości. W przypadku list zagnieżdżonych format liczby elementów i wartości powtarza się dla każdego wiersza. Dostarczona funkcja main wypisuje zwróconą wartość, a po niej jeden znak nowej linii. Listy używają standardowego formatu Kotlin z nawiasami kwadratowymi; nie wypisuj dodatkowych etykiet.
Spróbuj swoich sił
fun lookupStock(stock: Map<String, Int>, key: String): Int {
// Wpisz tutaj swoje rozwiązanie.
return 0
}
fun main() {
val stockCount = readln().toInt()
val stock = mutableMapOf<String, Int>()
for (i0 in 0 until stockCount) {
val stockKey = readln()
val stockValue = readln().toInt()
stock[stockKey] = stockValue
}
val key = readLine().orEmpty()
println(lookupStock(stock, key))
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ danych
1Mapy, część 1
Tworzenie mapBezpieczne odczyty z mapAktualizowanie mapSprawdzanie kluczyPowtórka – Stock Desk4Kolekcje zagnieżdżone
Listy listPrzechodzenie przez wierszePodsumowania wierszySpłaszczanie list zagnieżdżonychPowtórka – rzędy miejsc7Potoki operacji na kolekcjach
Przekształcanie za pomocą mapFiltrowanie wartościTestowanie reguł kolekcjiAgregowanie za pomocą foldPodsumowanie — zatwierdzone sumy2Mapy, część 2
Iterowanie po elementach mapyKlucze i wartościMapy częstotliwościZagnieżdżone mapyPodsumowanie — raport częstotliwości5Projekt – książka kontaktów
Zapisywanie kontaktówWyszukiwanie kontaktów3Zbiory i przynależność
Tworzenie zbiorówAktualizowanie zbiorówOperacje na zbiorachSprawdzanie podzbiorówPodsumowanie – goście wydarzenia6Wartości funkcji
Pisanie funkcji lambdaTypy funkcjiPrzekazywanie funkcjiPrzechwytywane zmiennePodsumowanie — konfigurowalny wynik9Zaawansowane sterowanie przebiegiem programu
Klauzule ochronnePrzerywanie pętli z etykietąKontynuowanie pętli z etykietąFunkcje rekurencyjnePodsumowanie — pierwszy poprawny wierszPoćwicz samodzielnie: Edytor online Kotlin