在 JavaScript 中,透镜是函数式编程中的一个概念,它让你能以模块化、不可变的方式访问和修改数据。本质上,透镜是一对可组合的纯函数,一个负责取值,一个负责设值,都聚焦于对象内部的某个特定字段。
用透镜可以简化代码、提高代码的复用性,并避免常见的编程错误。例如,可以用透镜来:
使用 lens 更新嵌套记录(仅适用于具有不可变数据的语言)。
更新嵌套的不可变记录的字段有点烦人。 结构越深,这类情况的代码就越繁琐。 比如,你有一个 Person,它包含一个 Address,Address 里有一个 Street,Street 里有一个 Number,那么要更新 Number,就得先创建一个带有新 Number 的 Street,再创建一个带有新 Street 的 Address,最后创建一个带有新 Address 的 Person。 是不是已经晕了?
解决这个问题的一个办法是使用 lens。
用 lens 实现几个访问记录的函数。 测试套件也允许你完全不用 lens,这样你就可以尝试不同的思路。