Функции-расширения позволяют добавлять новую функциональность к существующим классам без изменения их исходного кода и без использования наследования. Это особенно полезно при работе с классами из сторонних библиотек или стандартной библиотеки Kotlin.
Определи функцию-расширение, добавив перед именем функции тип-получатель (класс, который ты расширяешь):
fun String.addExclamation(): String = "$this!"
Внутри тела функции this ссылается на экземпляр, на котором эта функция вызывается.
fun String.addExclamation(): String = "$this!"
println("Hello".addExclamation()) // Output: Hello!
Функция-расширение выглядит как обычный член класса, но она разрешается статически во время компиляции.
"Hello".addExclamation() читается более естественно, чем отдельная вспомогательная функцияФункции-расширения не могут обращаться к приватным или protected членам класса-получателя, так как они не являются реальными членами класса.
Functions расширения разрешаются статически во время компиляции, а не динамически во время выполнения, поэтому они не могут быть переопределены подклассами.
Новый — ещё не проверен сообществом
Вы