Kotlin contracts (kotlin.contracts) — это механизм, который позволяет разработчикам предоставить компилятору дополнительную информацию о поведении функции. Это включает более умный анализ типов и более точные статические проверки.
Без contracts компилятор не всегда может делать безопасные предположения о том, как работает функция. Contracts решают эту проблему, позволяя явно объявлять гарантии поведения, например:
val внутри неёfun String?.isNotNullOrEmpty(): Boolean {
contract {
returns(true) implies (this@isNotNullOrEmpty != null)
}
return this != null && this.isNotEmpty()
}
После вызова этой функции компилятор знает, что receiver не null, и разрешает smart cast соответствующим образом.
contract { } внутри тела функцииKotlin contracts позволяют компилятору принимать более умные решения при анализе типов, явно объявляя гарантии поведения функции.
Новый — ещё не проверен сообществом
Вы