真的是小笔记···真的··真·
在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化,是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。(摘自wiki)
下面是我实战柯里化的Demo例子,语言是JavaScript。
一个参数的情况下:
例子:
function a(n){
console.log(n);
}
执行:
a(123);
这,没什么好说的,函数带参然后打印参数,结果返回:
123
两个参数的情况下:
例子:
function b(n){
console.log(n);
return function c(m){
return n*n + m*m;
}
}
在一个参数的情况下,执行:
b(1);
打印参数,返回里面的c()
函数,结果返回:
1
function c(m){
return n*n + m*m;
}
在两个参数的情况下,执行:
b(1)(2);
打印第一个参数,然后将第二个参数传入给c()
,执行计算,结果返回:
1
5
函数之间回调的柯里化
例子:
function c(n1) {
const m1 = 2;
console.log(n1);
return (callback) => {
return callback && callback(m1);
}
}
function b(n2) {
const m2 = 3;
console.log(n2);
return (callback) => {
return callback && callback(m2);
}
}
function d(n3){
console.log(n3);
}
在一个参数的情况下,执行:
c(123);
结果返回:
123
(callback) => {
return callback && callback(m);
}
在一个参数和一个函数的情况下,执行:
c(123)(b);
结果返回:
123
2
(callback) => {
return callback && callback(m2);
}
在一个参数和一个函数的情况下,执行:
c(123)(b)(d);
结果:
123
2
3
不得不说“柯里化”可以更好地理顺闭包的思想。
/逃
本文由 Chakhsu Lau 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。
赞一个!!
感谢指导!