函数式编程

来源:互联网 发布:笔记本温度监测软件 编辑:程序博客网 时间:2024/05/06 16:09

函数式编程

函数式编程概念,包括匿名函数、调用函数的不同方法,以及将函数作为参数传递给其他函数的方式。函数式概念的运营,采用的示例包括:扩展数组排序;动态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 并没因为函数式构造的添加就变成了函数式编程语言。

0 0
原创粉丝点击