Освой программирование играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
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)