Индекс в Kotlin
У массива и списка квадратные скобки читают и
меняют элемент. Для своего класса ту же запись
дают парой функций get и set
с operator - первая принимает индекс,
вторая еще и новое значение:
class Row(private val cells: MutableList<String>) {
operator fun get(index: Int): String {
return cells[index]
}
operator fun set(index: Int, value: String) {
cells[index] = value
}
}
Снаружи обращение выглядит как у коллекции: индекс в скобках для чтения, для записи - присваивание со скобками слева от знака равенства:
fun main() {
val row = Row(mutableListOf("a", "b", "c"))
println(row[1])
row[1] = "z"
println(row[1])
}
Индекс может быть не только Int. Тип
параметра задают в объявлении, лишь бы вызов в коде
совпадал с ним.
Сделайте класс Lane над
MutableList<String>. Реализуйте чтение
и запись через [ ]. Выведите второй
элемент набора "one", "two", "three",
замените его на "2" и снова выведите.
Для Lane с тремя ячейками "x"
запишите в нулевую ячейку "start"
и выведите её содержимое.