4

大学示例解释了如何添加和删除地图项:

(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)

添加什么都不做,删除会引发编译错误。

编辑:到目前为止,我使用quicklens,它能够修改序列。

4

1 回答 1

1

由于 OP 中没有明确的问题,我将尝试回答几个可能的问题:

  1. 为什么第一对线起作用,而第二对线不起作用?

答案在“at 和 index 有什么区别?我什么时候应该使用其中一个?”中给出了答案。页面的一半

换句话说,index可以更新任何现有值,同时at也可以insertdelete

  1. 如何在列表中添加/删除项目?

就在上面引用的文字下方:

由于index比 弱,我们可以在比 更多的数据结构上at实现一个实例。例如,或者只有一个实例,因为无法在序列的任意索引处插入元素。IndexAtListVectorIndex

所以这可能是不可能的......不过,我这里没有单片眼镜来测试一些东西。

于 2019-09-16T08:05:35.773 回答