本文将介绍96. 通用字段修改器用到的在LotusScript中模拟函数式编程的技巧。
函数式编程
函数式编程是一种优美而强大的编程范式。它源于Alonzo Church提出的λ演算(Lambda演算),而某个问题能表示成Lambda演算,按照Church–Turing论题,等价于该问题在数学上是可以有效计算的。粗略地说,用对应于Lambda演算的一门函数式程序语言可以写出任何理论上可计算问题的计算程序。因为与可计算理论的紧密关系和强大的表现力,函数式编程在学术界历来很受重视。但是在日常应用的软件产业,它的声名和流行程度就远不及命令式和面向对象的编程范式。不过近年来随着Erlang、Clojure等函数式编程语言的崭露头角,以及JavaScript、Scala、Python等混合范式编程语言中函数式编程的应用,函数式编程越来越受到业界主流的注意和推广。微软在.Net平台上推出了F#,Java也引进了Lambda表达式。
与一般程序员熟悉的命令式编程相比,函数式编程有以下几个主要特色:
- 函数是一级(first-class)对象。意味着函数与其他普通数据类型的值一样,能够被赋予变量,作为参数传给其他函数,作函数的返回值。
- 尽量避免函数的副作用。即某个函数运算用到的所有外部数据都以参数传入,结果以返回值传出,而不读取和修改外部公共变量。
- 更多使用递归,少用循环。
- 往往涉及大量的列表(list)计算。
下面用既能进行命令式编程又能进行函数式编程的JavaScript的一个简单例子来演示两者之间的差别。把一个包含数字的数组中的每个元素变成其平方。
命令式:
var list=[1, 2, 3, 4, 5];
function square(source){