Walidacja za pomocą Require
Część sekcji Logika i przepływ danych ścieżki Kotlin w Coddy. Lekcja 54 z 63.
require(condition) sprawdza warunek dotyczący argumentu funkcji. Jeśli warunek ma wartość false, zgłasza IllegalArgumentException. Końcowe wyrażenie lambda może dostarczyć komunikat o błędzie. Przechwycenie tego oczekiwanego błędu w miejscu wywołania pozwala przekształcić nieprawidłowe dane wejściowe w określony wynik.
fun ticketCost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}Wewnątrz main:
try {
println(ticketCost(-2))
} catch (error: IllegalArgumentException) {
println("invalid")
}Niespełniony warunek dotyczący argumentu powoduje wyjątek, zanim zostanie obliczony koszt.
require zgłasza IllegalArgumentException, gdy jego warunek ma wartość false.
Wyzwanie
ŚredniUzupełnij validatedCost, używając parametrów count: Int. Użyj dostarczonej funkcji pomocniczej cost, która wymaga nieujemnej wartości count. W przypadku powodzenia zwróć koszt jako ciąg znaków, a jeśli zostanie zgłoszony wyjątek IllegalArgumentException, zwróć invalid. count mieści się w zakresie od -1000 do 1000.
Jeśli powyżej nie podano bardziej rygorystycznych ograniczeń, kolekcje zawierają maksymalnie 100 elementów na każdym poziomie, a argumenty typu integer i wartości typu integer w kolekcjach mieszczą się w zakresie od -1000 do 1000. Tekst przekazany do parsowania może zawierać nieprawidłowe lub wykraczające poza zakres reprezentacje, zgodnie z opisem.
Zwróć wartość typu String. Pozostaw dostarczony kod wejścia/wyjścia. Odczytuje argumenty skalarne po jednym w wierszu; lista zaczyna się od swojej liczby elementów, po której następują te elementy, a mapa zaczyna się od liczby wpisów, po której następują kolejno każdy klucz i wartość. Zagnieżdżone listy powtarzają format liczby elementów i elementów dla każdego wiersza. Dostarczona funkcja main wypisuje zwróconą wartość, a następnie jeden znak nowej linii. Listy używają standardowego formatu Kotlin z nawiasami kwadratowymi; nie wypisuj dodatkowych etykiet.
Spróbuj swoich sił
fun cost(count: Int): Int {
require(count >= 0) { "count must be nonnegative" }
return count * 5
}
fun validatedCost(count: Int): String {
// Napisz tutaj swoje rozwiązanie.
return ""
}
fun main() {
val count = readln().toInt()
println(validatedCost(count))
}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ów8Sortowanie i grupowanie
Sortowanie według kluczaŁączenie porównańGrupowanie wartościPrzyporządkowywanie według kluczaPodsumowanie – ranking długości11Obsługa błędów
Parsowanie bez wyjątkówPrzechwytywanie konkretnych błędówTry jako wyrażenieWalidacja za pomocą RequirePodsumowanie — walidowane wielkości3Zbiory 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