JS 柯里化(Currying)

本文详细介绍了JavaScript中的柯里化技术,包括基本概念、实现原理及其应用实例。通过不同的示例代码展示了如何将多参数函数转换为单参数形式,同时讨论了闭包的作用。
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<title>JS 柯里化(Currying)</title>
</head>
<body>
<script type="text/javascript">
//f(x)和g(x)合成为f(g(x)),有一个隐藏的前提,就是f和g都只能接受一个参数。
//如果可以接受多个参数,比如f(x, y)和g(a, b, c),函数合成就非常麻烦。
//这时就需要函数柯里化了。所谓"柯里化",就是把一个多参数的函数,转化为单参数函数。

//群友(小硕)的解释
//柯里化是把一个有n个参数的函数变成n个只有1个参数的函数
//群友(Cloud)的解释
//柯里化一般都用到了闭包的,因为要访问上一次调用后返回在上一层函数中的变量
//群友(雕兄)的解释
//柯里化是把多参数函数变成一次只接受一个参数的函数

//柯里化之前
function add(x,y){
	return x+y;
}
console.info('柯里化之前:'+add(4,5));

//柯里化之后 , 这个也算 柯里化+闭包
function add2(x){
	return function(y){
		return x+y;
	};
}
console.info('柯里化之后:'+add2(4)(5));

//更深一些的柯里化,这个也算 柯里化+闭包
function add3(x){
    var sum = x;
    var tmp = function(y){
        sum = sum + y;
        return tmp;
    };
    tmp.toString = function(){
        return sum;
    };
    return tmp;
}
console.info('更深一些的柯里化:'+add3(4)(5)(6)(7)(8)(9));

//等于add3 = add3f
function add3f(x){
	return function(y){
		return function(z){
			return function(a){
				return function(b){
					return function(c){
						return x+y+z+a+b+c;
					};
				};
			};
		};
	};
}
console.info('add3 = add3f:'+add3f(4)(5)(6)(7)(8)(9));

//函数声明和函数表达式(fe)
//函数声明:function fn(){}; 
//函数表达式:var aaa = function fn(){}; var aaa = function(){};
//下面说说 匿名函数赋值给一个变量
//函数表达式的柯里化,这个也算 柯里化+闭包
var add4 = function(x){
	var sum = x;
    var tmp = function(y){
        sum = sum + y;
        return tmp;
    };
    tmp.toString = function(){
        return sum;
    };
    return tmp;
}
console.info('函数表达式的柯里化:'+add4(4)(5)(6)(7)(8));
</script>	
</body>
</html>

 

PS:群友(雕兄)的延伸拓展

柯里化的渊源应该是λ演算演算
λ演算演算里面只有一中数据类型,函数,这个函数只接受一个参数,也只返回一个参数
并且这个参数还是单值函数

 

效果图:

 

 

 

 

 

 

基于遗传算法的微电网调度(风、光、蓄电池、微型燃气轮机)(Matlab代码实现)内容概要:本文档介绍了基于遗传算法的微电网调度模型,涵盖风能、太阳能、蓄电池和微型燃气轮机等多种能源形式,并通过Matlab代码实现系统优化调度。该模型旨在解决微电网中多能源协调运行的问题,优化能源分配,降低运行成本,提高可再生能源利用率,同时考虑系统稳定性经济性。文中详细阐述了遗传算法在求解微电网多目标优化问题中的应用,包括编码方式、适应度函数设计、约束处理及算法流程,并提供了完整的仿真代码供复现学习。此外,文档还列举了大量相关电力系统优化案例,如负荷预测、储能配置、潮流计算等,展示了广泛的应用背景和技术支撑。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事微电网、智能电网优化研究的工程技术人员。; 使用场景及目标:①学习遗传算法在微电网调度中的具体实现方法;②掌握多能源系统建模优化调度的技术路线;③为科研项目、毕业设计或实际工程提供可复用的代码框架算法参考; 阅读建议:建议结合Matlab代码逐段理解算法实现细节,重点关注目标函数构建约束条件处理,同时可参考文档中提供的其他优化案例进行拓展学习,以提升综合应用能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值