function add (a, b) {
return a + b;
}
add(3, 4); //returns 7
function add (a) {
return function (b) {
return a + b;
}
}
add(3)(4);
var add3 = add(3);
add3(4);
看了例子还不知道柯里化是干嘛用的,好像只是变成闭包的形式而已。。实际用途多吗?该怎么用?
function add (a, b) {
return a + b;
}
add(3, 4); //returns 7
function add (a) {
return function (b) {
return a + b;
}
}
add(3)(4);
var add3 = add(3);
add3(4);
看了例子还不知道柯里化是干嘛用的,好像只是变成闭包的形式而已。。实际用途多吗?该怎么用?
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
使用 Curring 直接好处之一是可以帮你更好的处理和抽象代码的逻辑。
举个简单的栗子:
比如我有一个机器人餐厅,我现在想实现一个机器人自主烹饪的功能,那么我可以先实现一个 cook 方法如下:
我如果想要机器人做一个芝士蛋糕或者青椒肉丝的话,我需要向下面这样调用 cook 方法
经过一段时间的营业之后呢,我发现青椒肉丝的下单量非常的大,在客人用餐的时候可能80%的机器人都在做青椒肉丝,结果我需要下面这样频繁的调用 cook
每次都传重复的参数,非常麻烦,那么为了解决这个问题,我们就可以使用 Currying
这样我以后再想让机器人做青椒肉丝,就只用传入对应的机器人id就可以了:
这样是不是清爽很多呢?而且如果某天顾客又突然都喜欢吃芝士蛋糕了,那么我只需要下面这样也可以很方便的实现制作芝士蛋糕:
以上只是一个简单的例子,可能体会起来还不是那么深刻,当你的代码抽象层次更加深的时候,你就更能体会到 Curring 的好处了