Индекс в Dart
У списка квадратные скобки читают и меняют элемент.
Для своего класса ту же запись дают парой
operator [] и operator []= - первая
принимает индекс, вторая еще и новое значение:
class Row {
final List<String> _cells;
Row(List<String> cells) : _cells = cells;
String operator [](int index) {
return _cells[index];
}
void operator []=(int index, String value) {
_cells[index] = value;
}
}
Снаружи обращение выглядит как у коллекции: индекс в скобках для чтения, для записи - присваивание со скобками слева от знака равенства:
Row row = Row(["a", "b", "c"]);
print(row[1]);
row[1] = "z";
print(row[1]);
Индекс может быть не только int. Тип
параметра задают в объявлении, лишь бы вызов в коде
совпадал с ним.
Сделайте класс Lane над
List<String>. Реализуйте чтение
и запись через [ ]. Выведите второй
элемент набора "one", "two", "three",
замените его на "2" и снова выведите.
Для Lane с тремя ячейками "x"
запишите в нулевую ячейку "start"
и выведите ее содержимое.