Проверяет знание механизма добавления методов к существующим типам без унаследования.
Extension-функции позволяют «расширить» класс, добавив к нему новый метод без изменения его исходного кода или наследования. Они объявляются через синтаксис fun Type.myFun() {…}, доступны как обычные методы и помогают писать более читаемый код.
1. Объявление:
fun String.isEmail(): Boolean =
Regex("^[^@\\s]+@[^@\\s]+\\.[^@\\s]+\$").matches(this)2. Применение:
val email = "test@example.com"
if (email.isEmail()) { /* ... */ }3. Особенности:
Компилируются в статические методы с первым параметром типа
Порядок разрешения: методы класса > extension
4. Примеры использования:
Удобные проверки (List<T>.isNotEmpty())
DSL: button { text = "OK" }
Когда применять:
При необходимости добавить вспомогательный метод
Для создания читаемых DSL