When и Guard Conditions#kotlin
С релизом Kotlin 2.1.0 появился апдейт для when —
guard conditions. Эта новая фича улучшает читаемость кода, делая его более наглядным.
Давайте рассмотрим на примере, что она делает.
Предположим, есть базовый класс для получения ответа от сервера:
sealed interface HttpResult {
data class Success(val response: String) : HttpResult
data class Failed(val statusCode: Int) : HttpResult
}
Если включить Guard Conditions, то проверка в when специальных юзкейсов будет выглядеть так:
when (response) {
is HttpResult.Success -> println("Success")
is HttpResult.Failed if response.statusCode == 503 -> println("Maintenance")
is HttpResult.Failed -> println("Failed with code ${response.statusCode}")
}
Как мы видим, одну ошибку от бэка мы обработали без добавления if внутри условия:
when (response) {
is HttpResult.Success -> println("Success")
is HttpResult.Failed -> {
if (response.statusCode == 503) {
println("Maintenance")
} else {
println("Failed with code ${response.statusCode}")
}
}
}
Похоже, что стало удобнее, но нужно попробовать на практике.
Чтобы включить фичу, надо убедиться, что K2 Compiler включен, а потом добавить опцию:
kotlin {
compilerOptions {
freeCompilerArgs.add("-Xwhen-guards")
}
}
Чуть больше информации можно найти
тут.