Расширяющие функции: Позволяют добавлять новые функции к существующим классам без наследования или использования паттернов-декораторов. Улучшает читаемость и организацию кода.
Null-safety (null-безопасность): Система типов, которая явно различает nullable и non-nullable типы, предотвращая ошибки NullPointerException во время компиляции.
Data classes (классы данных): Упрощенное создание классов для хранения данных с автоматическим генерированием equals(), hashCode(), toString(), copy().
kotlin
Выражения while и when: when — мощная замена switch с поддержкой различных условий (типы, диапазоны, булевы условия), while может быть выражением, возвращающим значение последнего выполненного условия.
kotlin
Корутины (Coroutines): Легковесные потоки, упрощающие асинхронное и неблокирующее программирование. Интегрированы на уровне языка.
Именованные и необязательные аргументы: Повышают читаемость кода при вызове функций и позволяют опускать необязательные параметры.
kotlin
Смарт-касты (Smart casts): Компилятор автоматически определяет тип переменной после проверки условия (например, is), позволяя обращаться к членам этого типа без явного приведения.
kotlin
Type inference (вывод типов): Компилятор часто может самостоятельно определить тип переменной, уменьшая избыточность кода.
kotlin
Лямбда-выражения с неявным параметром it: Удобно для простых лямбд с одним параметром.
kotlin