javascript科里化(Currying)
来源:互联网 发布:office 2011 of mac 编辑:程序博客网 时间:2024/05/15 11:47
首先Wiki里对Curring(科里化)的定义:
Currying is the technique of transforming a function that takes multiple arguments
in such a way that it can be called as a chain of functions each with a single argument.
意思是:将多拥有多个参数的函数形式转化为拥有单一参数的函数形式.
比如下面是一个普通求和函数:
function add(x, y) { return x + y;}document.write("add(3, 4) == " + add(3, 4));
下面看下这个普通函数科里化的例子:
function add(x, y) { if(x != null && y != null) return x + y; // 如果x,y都不为null.则返回x + y; else if(x != null && y == null) { return function(y) { return x + y; } }else if(x == null && y != null){ return function(x) { return x + y; } }}document.write("add(3, 4) == " + add(3, 4) + "<br/>");document.write("add(3)(4) == " + add(3)(4) + "<br/>");// add(3)得到的是一个add的科里化函数
最后给出一个通用的科里化转化函数:
//===========================//// ==== Common Curring ====////===========================function Curring(func) { return function() { var args = Array.prototype.slice.call(arguments, 0); if(args.length < func.length){ // 如果形参小于实参参数 return function(){ var _args = args.concat(Array.prototype.slice.call(arguments, 0)); // 取得参数 return Curring(func).apply(this, _args); // 然后递归调用函数,获取所有参数 } }else { return func.apply(this, args); } }}// ==== the Common function ====function f(x, y, z) { alert([x, y, z])}var cuf = Curring(f);cuf(2, 3, 4);cuf(2, 3)(4);cuf(2)(3)(4);
- javascript科里化(Currying)
- javascript学习进阶-----科里化(currying)
- JavaScript中的柯里化(currying)
- Javascript中currying的实现
- currying in javascript-js柯里化
- Currying
- Javascript currying的三种实现
- 对Javascript柯里化currying的理解
- 函数-JavaScript 中的 函数 currying 柯里化
- JavaScript函数绑定Demo以及函数Currying柯里化
- Scala Currying
- Currying是什么
- scala Currying
- JS的Currying
- 柯里化(Currying)
- Swift 柯里化(Currying)
- 函数柯里化(Currying)
- Currying-柯里化[Swift笔记]
- MDP~
- com.mysql.jdbc.PacketTooBigException: 解决方案
- 搜索引擎lucene入门程序示例
- UVa Problem 101 - The Blocks Problem
- java中的设计模式(一)--简单工厂模式
- javascript科里化(Currying)
- UVa Problem 102 - Ecological Bin Packing
- 实现录音,播放,以及Socket的上传和下载。。【处女作】
- 解析properties文件内容
- MFC Application无法启动程序,因为计算机中丢失mfc90ud.dll的解决方案
- 用 GStreamer 简化 Linux 多媒体开发
- 多线程
- 分糖果
- Windows中如何计算时间间隔(1)使用CTime 和CTimeSpan