雖然可組合 lens()
、prop()
與 assoc()
組合出 Lens,但實務上會使用更精簡的 lensProp()
。
Version
Ramda 0.27.1
prop()、assoc()
import { lens, prop, assoc } from 'ramda'
let data = {
title: 'FP in JavaScript',
price: 100
}
let titleLens = lens(prop('title'), assoc('title')) // ?
可將 prop()
與 assoc()
傳入 lens()
組合出 Lens。
lensProp()
import { lensProp } from 'ramda'
let data = {
title: 'FP in JavaScript',
price: 100
}
let titleLens = lensProp('title') // ?
Ramda 提供了更精簡方式,只要透過 lensProp()
可一步建立 Lens,它會自動幫我們建立相對應 getter 與 setter,實務上都直接使用 lensProp()
,甚少使用 lens()
。
lensProp()
String → Lens s a
針對 Object 建立 Lens
String
:傳入 property 名稱Lens s a
:回傳該 property 的 Lens
Conclusion
lensProp()
只要提供 Object 的 property 名稱就可建立 Lens,非常方便