首页 > 其他 > 详细

[Ramda] Change Object Properties with Ramda Lenses

时间:2017-03-01 22:54:04      阅读:212      评论:0      收藏:0      [点我收藏+]

In this lesson we‘ll learn the basics of using lenses in Ramda and see how they enable you to focus changes on specific properties of an object while keeping your data immutable.

 

what ‘R.lens‘ do is able to get or set prop value but keep the object immutable.

Normally when you two ways to use lens:

1. set up lens: ‘lens‘ + ‘prop‘ + ‘assoc‘;

After set up you can either get value by using ‘R.view‘;

Or change a prop by using ‘R.set‘ or ‘R.over‘.

 

2.  Using ‘lens‘ + ‘prop‘ + ‘assoc‘ is a little bit work to do, there is short syntax to do the same thing: ‘R.lensProp‘.

const R = require(ramda);

const {view, lens, assoc, prop, set, over, lensProp, toUpper} = R;

const person = {
    firstName: Fred,
    lastName: Filntstore
};

/*
* What lens does is modify prop value for a given object
* and keep data immutable.
* */

const firstNameLens = lens(
    prop(firstName),
    assoc(firstName)
);
const viewFirstName = view(firstNameLens);
// const result = viewFirstName(person); // Fred

/** Using R.set **/
const setFirstName = set(firstNameLens);
const updateFirstName = setFirstName(Zhentian);
// const result = updateFirstName(person); // { firstName: ‘Zhentian‘, lastName: ‘Filntstore‘ }

/** Using R.over instead of set **/
const result = over(firstNameLens, toUpper, person);

/** lensProp instead of prop + assoc **/
const lastNameLens = lensProp(lastName);
const result2 = over(lastNameLens, toUpper, person); // { firstName: ‘Fred‘, lastName: ‘FILNTSTORE‘ }
console.log(result);
console.log(result2);

 

[Ramda] Change Object Properties with Ramda Lenses

原文:http://www.cnblogs.com/Answer1215/p/5947338.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!