系统程序员成长计划 学习笔记(2) -- Write Less

来源:互联网 发布:淘宝上那家卖警服 编辑:程序博客网 时间:2024/06/10 06:12

很简单的需求, 单链表中可能存放整数, 字符串, 浮点, 双精度等等数据类型, 写出遍历函数,

 

当然不可能每种类型写一个函数, 这样的代码太丑陋, 因为大量的代码都是重复的, 这个时候就用到回调的方法,

 

声明函数指针

 

 

实现外层函数

 

  

 

一个printer的例子,

 

  

调用

 

  

 

这又就节省了大量的遍历链表产生的重复代码;

 

 

另一个例子是找出单链表里的最大值和累加单链表各个的节点值, 这两个算法肯定是相似度很高的. 一般人其实第一直觉意识不到这一点, 所以会写两个函数, 写完了发现, 大部分的操作(遍历)是重复的, 如何做呢,

 

类似, 采用回调函数, 但是这里涉及到了回调函数保存中间数据的问题, (当前最大值, 和partial result of sum)

 

于是

 

首先声明

 

  

ir就是用来保存中间数据的,

 

实现上层函数

 

 

 

回调函数的例子:

 

  

这里ctx就是保存的中间结果