Освоюємо Kotlin/Розширення
Розширення (extensions) в Kotlin дозволяють вам додати додаткову функціональність уже існуючим класам або інтерфейсам без механізму успадкування або патерну проєктування Decorator. Цей механізм корисний при роботі із сторонніми бібліотеками і вам, наприклад, треба додати функцію до якогось класу, а успадкування закрите. Раз створивши її, ви зможете викликати її в будь який момент так ніби вона початково була членом класу чи інтерфейсу.
Найбільш пошириними форматами розширення є розширювальні функції (extension functions) та розширювальні властивості (extension properties).
Розширювальні функції
[ред.]Наприклад ми маємо клас Person і ми хочемо додати до нього функцію поліндром, що пише ім'я особи задом наперед.
class Person (var name:String){} // клас Person з одною властивістю name
fun Person.reverseName():String{ //додаєм розширювальну функцію для Person
return this.name.reversed() // this - це посилання на об'єкт класу Person
}
fun main(){
var person=Person("Василь Давидюк")
println(person.reverseName()) // кюдиваД ьлисаВ
}
Як бачимо клас ми не змінювали, але використовуючи об'єкт цього класу ми викликаємо нашу нову функцію.
Можна розширити і базові типи як то Int, String і т.п.:
fun String.reverseString():String{ //додаєм розширювальну функцію
return this.reversed()
}
fun main(){
println ("Це буде обернено".reverseString()) // оненребо едуб еЦ
}
Прикладами функцій розширення в kotlin є функції колекцій .map(), .filter(), reduce() тощо.
Детальніше
[ред.]