310_common lisp typecase分支结构
完整的emacs and lisp的学习集合整理如下:
https://github.com/GreyZhang/g_lisp
继续emacs以及lisp的学习,今天再从common lisp入手学一点基础性的语言操作。今天看一下typecase。说起来,熟悉C语言的人应该大致了解这么一个类似的处理结构,因为它与C语言中的switch case结构十分相似。
上面是一个简单的使用例子,不同于C语言中的switch,这个功能判断的不是数值而是类型。从上面的测试结果可以看得出,成功判断出来了整形和字符串两种类型。联想C语言,switch分支有break也有一个默认的分支default。当然,说到这儿,著名的三大本中似乎也提到过这种设计可以说是一种错误的设计。90%的情况下,只要是没有加break就是错误的。继续说,有点偏离主题了,我们看看common lisp中与之相应的功能设计。
上面的测试就用到了default的类似分支,这里是otherwise。同时也做了一个测试,说明这个输入能够工作的一个前提是输入的是一个单个的对象。
增加一个测试,如果没有这个默认的处理会如何呢?从上面看,没有这个分支处理的时候这个只是会返回一个nil。
完整的emacs and lisp的学习集合整理如下: