tgoop.com/kotlin_lib/589
Create:
Last Update:
Last Update:
Не хотите поговорить о Kotlin Contracts?
За время собеседований я заметил одну любопытную вещь: даже опытные котлиноводы частенько не в курсе такой мощной фичи, как Kotlin Contracts.
Этой серией статей я хочу простым человеческим языком показать, зачем нужны Contracts, как их использовать на практике и как они работают внутри.
Какую проблему решают Kotlin Contracts?
Все мы любим Kotlin за умные проверки типов. Например, напишешь так:
fun foo(x: Any) {
if (x is List<*>) {
x.size // Всё ок, компилятор молодец!
}
}
И всё работает!
Но стоит вынести ту же проверку в отдельную функцию:
fun isList(x: Any): Boolean = x is List<*>
fun foo(x: Any) {
if (isList(x)) {
x.size // Ошибка: "Unresolved reference: size"
}
}
В чём подвох?
https://habr.com/ru/companies/alfa/articles/916536/
✍️ @kotlin_lib
BY Kotlin

Share with your friend now:
tgoop.com/kotlin_lib/589