Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Свойства-расширения

Кроме функций-расширений Kotlin позволяет создавать свойства-расширения. Они позволяют добавлять в классы функции, к котором можно обращаться как к свойствам. Иногда подобные свойства удобны из-за краткого синтаксиса.

Для сравнения создадим функцию-расширение и свойство-расширение.


// функция-расширение
fun String.lastChar(): Char = get(length - 1)

// свойство-расширение
val String.lastChar: Char
    get() = get(length - 1)

У класса StringBuilder для создания аналогичного свойства используем var, потому что содержимое экземпляра StringBuilder может меняться.


var StringBuilder.lastChar: Char
    get() = get(length - 1)
    set(value: Char) {
        this.setCharAt(length - 1, value)
    }

Вызываем в коде.


// получить последний символ строки
println("Cat".lastChar)

// заменить последний символ строки
val sb = StringBuilder("Cat?")
sb.lastChar = '!'
println(sb)
Реклама