Добавить и удалить элементы списка
В примере университета объясняется, как добавлять и удалять элементы карты:
(departments composeLens at("Physics")).set(Some(physics))(uni)
(departments composeLens at("History")).set(None)(uni)
Это не работает со списками, хотя:
(lecturers composeOptional index(2)).set(Lecturer("New", "Lecturer", 50))(dep)
(lecturers composeOptional index(0)).set(None)(dep)
Добавление ничего не делает, удаление приводит к ошибке компиляции.
0 ответов
Поскольку в OP нет явного вопроса, я постараюсь ответить на несколько возможных вопросов:
- Почему первая пара линий работает, а вторая - нет?
Ответ дается в разделе "В чем разница между at и index? Когда я должен использовать тот или иной?" посередине страницы:
Другими словами,
index
может обновлять любые существующие значения, покаat
может такжеinsert
а такжеdelete
.
- Как я могу добавлять / удалять элементы в / из списка?
Чуть ниже приведенного выше текста:
поскольку
index
слабее чемat
, мы можем реализовать экземплярIndex
по большей структуре данных, чемAt
. Например,List
илиVector
есть только экземплярIndex
потому что нет возможности вставить элемент в произвольный индекс последовательности.
Так что это может быть невозможно... Однако у меня нет Монокля, чтобы проверить несколько вещей.