函数式编程
2015-07-19 13:29
597 查看
函数式编程
函数式编程概念,包括匿名函数、调用函数的不同方法,以及将函数作为参数传递给其他函数的方式。函数式概念的运营,采用的示例包括:扩展数组排序;动态HTML生成的优美代码;系列函数的应用。相较于指令式编程,函数式编程强调函数的计算比指令的执行重要。相较于过程化编程,函数的计算可随时调用。以编写一个计算阶乘的函数为例,我们可以编写一个循环程序解决问题,也可以使用递归来得到所有数字的乘积。
过程化编程计算阶乘
int factorial (int n) { if (n < = 1) return 1; else return n * factorial (n-1); }
javascript中函数式编程示例
函数并不总是需要名称。
函数可以像其他值一样分配给变量。
函数表达式可以编写并放在括号中,留待以后应用。
函数可以作为参数传递给其他函数。
一个普通的过程化计算求和函数:
function sum(x,y,z) { return (x+y+z); }
上述函数对应的匿名函数:
function(x,y,z) { return (x+y+z); }
调用匿名函数:使用函数作为值,也可以将函数作为值使用。还可以拥有一些所赋值是函数的变量
var sum = function(x,y,z) { return (x+y+z); }(1,2,3);
alert(sum);
为变量 sum 赋的值是函数定义本身。这样,sum 就成了一个函数,可以在任何地方调用。
var sum = function(x,y,z) { return (x+y+z); }
alert(sum(1,2,3));
JavaScript 中两种方式调用函数的方式:
alert (“Hello, World!"); (alert) (“Hello, World!");
可以在括号中编写函数表达式,然后传递给参数,对参数进行运算。
( function(x,y,z) { return (x+y+z) } ) (1, 2, 3);
也可以将函数作为参数传递,并应用该函数
var passFunAndApply = function (fn,x,y,z) { return fn(x,y,z); }; var sum = function(x,y,z) { return x+y+z; }; alert( passFunAndApply(sum,3,4,5) ); // 12
函数式编程的发展
函数式编程语言不太流行有各种原因,常被认为严重耗费CPU和内存资源。主因有二:早期的函数式编程语言实现时并无考虑过效率问题。非函数式编程语言为求提升速度,会在某些部分放弃边界检查或垃圾回收等功能。但近来, 以.NET 平台上的 Haskell为例的函数式编程语言正在进入计算机行业。其他一些语言也借用了函数式编程语言中的部分概念。一些 C++ 实现中的迭代器和 continuation,以及 JavaScript 中提供的一些函数式构造(functional construct),就是这种借用的示例。尽管如此,通过借用函数式构造,总的语言编程范例并没有发生变化。JavaScript 并没因为函数式构造的添加就变成了函数式编程语言。相关文章推荐
- C#函数式编程中的缓存技术详解
- C#函数式编程中的部分应用详解
- C#函数式编程中的标准高阶函数详解
- Java函数式编程(五):闭包
- javascript 函数式编程
- 用函数式编程技术编写优美的 JavaScript_ibm
- C#函数式编程中的递归调用之尾递归详解
- C#函数式编程中的惰性求值详解
- Java函数式编程(十二):监控文件修改
- Java函数式编程(七):MapReduce
- Java函数式编程(四):在集合中查找元素
- Java函数式编程(十):收集器
- Java函数式编程(八):字符串及方法引用
- Java函数式编程(三):列表的转化
- Java函数式编程(一):你好,Lambda表达式
- Java函数式编程(六):Optional
- Java函数式编程(九):Comparator
- Java函数式编程(十一):遍历目录
- Java函数式编程(二):集合的使用
- 实例讲解python函数式编程