【发布时间】:2014-11-28 11:09:43
【问题描述】:
我正在尝试在我的 javascript 应用程序中更多地转向函数式编程。我目前使用库 ramda 作为此库的基础库。
我的愿望:
- 创建一个函数
findWithId(id, list),它返回列表中具有与输入ID 匹配的属性_id的项目。 - 尽可能短的实现它,尽可能依赖现有代码。
目前已实现:
我的基地是R.find 有这个防御
find :: (a -> Boolean) -> [a] -> a | undefined
我尝试了一些不同的解决方案,如下所示:
//Using ramdajs (ramdajs.com)
var hasId = R.curry(function(id, item) {
return item._id === id
});
//This doesn't work
var findWithId_v1 = R.find(hasId);
//This works but can I make it as short as v1?
var findWithId_v2 = function(id, list) {
return R.find(hasId(id), list);
}
问题
我可以使用标准的函数式编程工具(如 compose、curry 等)使 findWithId_v2 和 findWithId_v1 一样短吗?
Plunker 演示
【问题讨论】:
-
这不一定是我想做的。我想了解 FP,如果我知道这是可能的,那么我可以在很多地方使用它。如果我知道它不是,那么我就不会(一直)为考虑是否可以改进我的代码而烦恼。
-
@Cerbrus 在阅读了您的第二条评论后,我认为您不理解问题和/或主题。
-
好的,为什么你想用这个库来做?为什么要“更多地转向函数式编程”?
标签: javascript functional-programming currying ramda.js