點燈坊

失くすものさえない今が強くなるチャンスよ

使用 view() 藉由 Lens 讀取 Property

Sam Xiao's Avatar 2021-04-22

建立 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 的 Lens
  • s:傳入 Object
  • a:回傳 property 的值

view000

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。

view001

Conclusion

  • ECMAScript 的 Object 並非 immutable 可任意修改,但透過 Lens 可使 Object 能 immutable 並藉由 view() 讀取

Reference

Ramda, view()