目标是一个很常见的应用,在一批雇员的集合里面,查找年龄大于等于21的员工的工资总和。
一 函数式编程思想会这样实现(python):
这段代码的逻辑如下:
1 使用randmo.choice函数生成4个雇员的形成一个字典集合。
2 选出这个集合里面年龄大于等于21的雇员,并把他们每一个人的工资放到一个新的集合。
3 使用reduce函数,告诉它对这个工资的集合进行累加,然后得到结果。
二 传统的过程编程思想会这样实现(java):
这段代码的逻辑如下:
1 新建一个List<Map<String,Object>> 集合。
2 分别新建4个Map<String,Object> 并添加雇员的测试数据,并添加到List<Map<String,Object>> 集合。
3 新建一个变量 salsryTmp,初始值为0;
4 遍历集合,取出每一个map,如果当前map里面的age大于等于21,那么就让salsryTmp加上当前map里面的age。
5 循环结束后,salsryTmp的值就是我们要的结果。
三 总结
如果你觉得上面的java代码非常直观且合乎逻辑,那说明你已经习惯按照计算机的思维模式进行思考了。通过创建 for 循环来遍历所有雇员并使用if判断,使用临时变量累计,这完全是为计算机服务的思路。函数式编程的一大特点就是尽量抛弃这种明显循环遍历的做法,而是把注意集中在解决问题本身,代码就是对问题目标的描述。
网友评论