您的位置:首页 > 编程语言

函数式编程

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 并没因为函数式构造的添加就变成了函数式编程语言。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数式编程