|
|
在一些不基于传统OOP模型的编程语言中,由于没有或者不强调类与对象的关系,实现多态的方法并不能够通过类间的继承或者接口来实现。这种情况下也许函式编程和元编程的思想能给我们一点启发,本文用了没有类也没有接口的JavaScript作为用例来表述。示例代码中只包含了最基本的逻辑,不包含太多的容错处理,代码在Node.js下运行通过。
最大值最小值
我们可以先从一个最简单的问题开始着手:查找一堆数字中的最大值和最小值。这里假设把一堆整数放到数组中并用擂台算法的实现,其实查找最大值和最小值两个动作的其它部份逻辑都是相同的,唯一不同的就是比较两个值大小的逻辑。在找最大值的时候,我们要判断新来的值是否比较大;在找最小值时则相反。
先看代码:
var numbers = [2,3,1,5,4];var maximum = function(max, current) { return max > current ? max : current;};var minimum = function(min, current) { return min < current ? min : current;};console.log(numbers.reduce(maximum));console.log(numbers.reduce(minimum));console.log(numbers);
以上代码输出结果:
<div class="quote_div">5
1
[ 2, 3, 1, 5, 4 ] |
|