建立 Lens 之後,view()
可藉由 Lens 讀取 Object 的 Property,並結合 Function Pipeline 與組合其他 Function。
Version
Ramda 0.27.1
view()
import { lensProp, view } from 'ramda'
let data = {
title: 'FP in JavaScript',
price: 100
}
view(lensProp('title'), data) // ?
由 lensProp()
建立 Lens 後,可使用 view()
藉由 Lens 讀取 property。
view()
Lens s a → s → a
使用 Lens 讀取 Object 指定 property
Lens s a
:傳入 property 的 Lenss
:傳入 Objecta
:回傳 property 的值
Function Pipeline
import { pipe, lensProp, view, toUpper } from 'ramda'
let data = {
title: 'FP in JavaScript',
price: 100
}
pipe(
view(lensProp('title')),
toUpper
)(data) // ?
view()
搭配 Lens 有什麼好處呢 ? 在於其能使用 Function Pipeline 組合其他 function。
Conclusion
- ECMAScript 的 Object 並非 immutable 可任意修改,但透過 Lens 可使 Object 能 immutable 並藉由
view()
讀取