函数柯里化的几个例子
来源:互联网 发布:铁血战士玩具淘宝 编辑:程序博客网 时间:2024/05/16 17:16
函数柯里化
用于创建一个已经设置好了一个或或者多个参数的函数
通用写法如下:
function curry(fn){ var args = Array.prototype.slice.call(arguments, 1); return function(){ var innerArgs = Array.prototype.slice.call(arguments); var finalArgs = args.concat(innerArgs); return fn.apply(null, finalArgs); }}function add(num1, num2){ return num1 + num2;}var curriedAdd = curry(add, 5);console.log(curriedAdd(3));
利用函数柯里化的实例1:
实现函数 functionFunction,调用之后满足如下条件: 1、返回值为一个函数 f 2、调用返回的函数
f,返回值为按照调用顺序的参数拼接,拼接字符为英文逗号加一个空格,即 ‘, ’ 3、所有函数的参数数量为 1,且均为 String 类型
function functionFunction(str) { var args=Array.prototype.slice.call(arguments,0); var f=function(){ var args_f=Array.prototype.slice.call(arguments,0); args_f=args.concat(args_f); return functionFunction.apply(this,args_f); } f.valueOf=function(){ return args.join(", "); } f.toString=function(){ return args.join(", "); } return f; }
利用函数柯里化的实例2:
已知 fn 为一个预定义函数,实现函数 curryIt,调用之后满足如下条件:
1、返回一个函数 a,a 的 length 属性值为 1(即显式声明 a 接收一个参数)
2、调用 a 之后,返回一个函数 b, b 的 length 属性值为 1
3、调用 b 之后,返回一个函数 c, c 的 length 属性值为 1
4、调用 c 之后,返回的结果与调用 fn 的返回值一致
5、fn 的参数依次为函数 a, b, c 的调用参数
function curryIt(fn) { //获取fn参数的数量 var n = fn.length; //声明一个数组args var args = []; //返回一个匿名函数 return function(arg){ //将curryIt后面括号中的参数放入数组 args.push(arg); //如果args中的参数个数小于fn函数的参数个数, //则执行arguments.callee(其作用是引用当前正在执行的函数,这里是返回的当前匿名函数)。 //否则,返回fn的调用结果 if(args.length < n){ return arguments.callee; }else return fn.apply("",args); } }
阅读全文
0 0
- 函数柯里化的几个例子
- 函数指针的几个例子
- 递归函数的几个例子
- 递归函数的几个例子
- cv2的几个常用函数及例子
- 几个 CGRect 函数例子
- 几个 CGRect 函数例子
- 关于C++虚继承、虚函数继承的几个例子
- java8中几个函数式接口的小例子
- OracleHelper的几个例子.
- Papervision3D的几个例子
- set_union的几个例子
- QFont的几个例子
- set_union的几个例子
- set_union的几个例子
- python的几个例子
- set_union的几个例子
- 【C语言】用递归函数是实现函数功能的几个例子
- 欢迎使用CSDN-markdown编辑器
- Git首次push报错
- OpenCV-将图像两次缩放+转化为灰度图+边缘检测
- navicat for mysql 如何将表ID排序重1开始?
- Python woe 0.0.7 源码解析
- 函数柯里化的几个例子
- js函数内嵌函数的整体跳出
- 排序算法—归并排序
- 万圣节H5的经典案例,速收藏!
- Java 实现手机号的归属地查询 手机号码的卡的类型
- opencv学习笔记二
- MyBatis教程
- urllib.request模块(9/30)
- 从Eclipse转移到IntelliJ IDEA一点心得