tgoop.com/android_live/510
Last Update:
Как сделать компилятор Kotlin умнее
#article #kotlin
Компилятор Kotlin довольно умный и даёт нам подсказки о наших же ошибках.
Одной из самых заметных фич в компиляторе Kotlin является smart casting. Это значит, что компилятор может выполнять приведение типов на основе проверок, выполненных разработчиком.
Однако механизм smart casting не безграничен. Например, компилятор может проверить переменные только в том блоке, где эти проверки были непосредственно выполнены.
Немногие разработчики знают, что можно написать контракты, которые помогут компилятору в его работе. Например, если вы создадите контракт, функция которого возвращает true, в случае если переменная не равна null, компилятор выполнит приведение типа и сделает нашу переменную non-nullable.
Contract DSL выглядит так:fun foo(): Boolean {
contract {
// Effect
}
// Function body
}
Можно использовать следующие функции для того, чтобы описать контракт:
🔸returns(value) — описывает ситуацию, когда функция нормально возвращается с указанным значением.
🔸returnsNotNull() — описывает ситуацию, когда функция возвращает non-nullable значение.
🔸implies(booleanExpression) — указывает, что данный наблюдаемый эффект будет истинным при заданном booleanExpression
🔸callsInPlace(lambda, kind) — позволяет указать, как часто будет выполняться данная лямбда.
Краткое описание параметров способно запутать, но можно обратиться к статье, чтобы получить больше информации с примерами. Надеюсь, что в будущем появится ещё больше функций для описания контрактов 🤟.
BY Android Live 🤖

Share with your friend now:
tgoop.com/android_live/510