Typ Result
Modeluj powodzenie i niepowodzenie
Typ Result to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Sukces lub niepowodzenie
Wiele operacji może zakończyć się niepowodzeniem. Typ Result w Kotlinie modeluje wynik, który jest albo sukcesem zawierającym wartość, albo niepowodzeniem zawierającym wyjątek — bez rzucania wyjątku.
Tworzenie sukcesu
Owiń wartość w pomyślny wynik za pomocą Result.success(value).
fun main() {
val r: Result<Int> = Result.success(42)
println(r.isSuccess)
println(r.getOrNull())
}Tworzenie niepowodzenia
Reprezentuj błąd za pomocą Result.failure(exception). Wyjątek nie zostanie rzucony, dopóki nie zdecydujesz się go rozpakować.
fun main() {
val r: Result<Int> = Result.failure(IllegalStateException("bad"))
println(r.isFailure)
println(r.exceptionOrNull()?.message)
}getOrNull i exceptionOrNull
Sprawdzaj wynik bezpiecznie: getOrNull() zwraca wartość albo null, a exceptionOrNull() zwraca błąd albo null.
fun main() {
val ok = Result.success("hi")
val bad = Result.failure<String>(RuntimeException("oops"))
println(ok.getOrNull())
println(bad.exceptionOrNull()?.message)
}getOrDefault
Podaj wartość zastępczą dla niepowodzeń za pomocą getOrDefault. Jest to czytelniejsze niż sprawdzanie wartości null, gdy istnieje sensowna wartość domyślna.
fun main() {
val bad: Result<Int> = Result.failure(Exception())
println(bad.getOrDefault(0))
val ok: Result<Int> = Result.success(7)
println(ok.getOrDefault(0))
}getOrElse
getOrElse oblicza wartość zastępczą na podstawie wyjątku, dzięki czemu można różnie reagować na różne błędy.
fun main() {
val r: Result<Int> = Result.failure(IllegalArgumentException("nope"))
val value = r.getOrElse { e -> if (e is IllegalArgumentException) -1 else -2 }
println(value)
}getOrThrow
Jeśli potrzebujesz wyjątku, getOrThrow() zwraca wartość albo ponownie rzuca zapisany wyjątek.
fun main() {
val ok = Result.success(10)
println(ok.getOrThrow())
try {
Result.failure<Int>(IllegalStateException("fail")).getOrThrow()
} catch (e: Exception) {
println("caught: " + e.message)
}
}Zwracanie wyniku Result
Funkcja może zwracać Result, aby jawnie uwzględnić możliwość niepowodzenia w swoim podpisie i wymusić na wywołujących obsługę obu wyników.
fun parse(s: String): Result<Int> {
val n = s.toIntOrNull()
return if (n != null) Result.success(n)
else Result.failure(NumberFormatException(s))
}
fun main() {
println(parse("123").getOrNull())
println(parse("x").exceptionOrNull()?.message)
}Result a wyjątki
Wyjątki są niewidoczne w podpisach i zakłócają przepływ sterowania. Result sprawia, że niepowodzenie staje się wartością, którą można przekazywać i przekształcać tak jak każdą inną — jawnie, w sposób umożliwiający komponowanie i trudno ją zignorować.
Kiedy używać Result
Używaj Result w przypadku możliwych do obsłużenia, oczekiwanych niepowodzeń, które mają być obsługiwane przez wywołujących. Wyjątki należy nadal rzucać w naprawdę wyjątkowych sytuacjach wynikających z błędów programisty, takich jak naruszenie kontraktu.
Wartość, nie skok
Najważniejsza zmiana polega na tym, że błąd staje się zwykłą wartością zwracaną. Następnie poznasz runCatching, które automatycznie przechwytuje rzucone wyjątki do obiektu Result.
Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat typu Result.
Podsumowanie
Poznano typ Result:
- Tworzenie za pomocą
Result.success/Result.failure - Sprawdzanie za pomocą
getOrNull,exceptionOrNull - Odzyskiwanie za pomocą
getOrDefault,getOrElse,getOrThrow - Zwracanie go w celu jawnego uwzględnienia niepowodzenia
Następnie: runCatching.
Ucz się Kotlin dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Typ Result” jest bezpłatna?
Tak — pełny tekst „Typ Result” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Typ Result”?
Modeluj powodzenie i niepowodzenie Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Typ Result”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.