【发布时间】:2020-04-09 05:01:01
【问题描述】:
我想对一些对象属性应用不同的函数。假设我有这个对象:
const person = {
name: 'John',
age: 30,
friends: [],
};
我有一些功能要应用于这些属性:
const upperCase = str => str.toUpperCase() //for the name
const add10 = int => int + 10 // for the age
const addFriend = (value,list) => [...list,value] // adding a friend
这应该是结果:
const person = {
name: 'JOHN',
age: 40,
friends: ['Lucas']
}
使用函数式编程和无点实现这一目标的最佳方法是什么,如果您可以包含使用 Ramda 的示例,我将不胜感激,谢谢!
【问题讨论】:
-
在对象的成员上调用每个函数。
-
Ramda 和 Folktale 在函数式编程的方法上非常不同。这并不是说它们是关于“不同”的函数式编程,而是它们是关于它的不同方面。 Ramda 为您提供函数式风格的辅助函数,例如
R.map或R.flip或R.compose等。而 Folktale 实现了诸如 Functor、Monad、Applicative、Grupoid 等代数类型。两者并不是真正可互换的,但可以使用在一起。 -
@MaihanNijat 我知道我可以调用对象上的每个函数,一次一个,但是有没有办法我可以同时应用所有这些函数,并保持函数纯净?
-
@DavidSttivendAngel 为所有这些函数创建一个包装函数,并且只调用一次。
-
@MaihanNijat 我想我知道如何通过定期通话来做到这一点。我更新了问题,所以答案也包括免费的。谢谢
标签: javascript functional-programming ramda.js folktale