311_common lisp case结构

完整的emacs and lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp

    继续emacs以及lisp的学习,这一次看一下common lisp中的case结构。首先,我们设计一段测试代码如下:311_common lisp case结构

    通过上面的测试,可以看得出,设计的函数能够识别 a b c三个关键字。

311_common lisp case结构

    我们通过提示看一下case结构,可以看得出后面的这些识别信息其实是key,也就是关键字。如果输入一个没有定义的关键字会是什么情况呢?

311_common lisp case结构

    如果是没有定义的关键字,输出是nil。如果,输入的是一个非关键字的信息呢?

311_common lisp case结构

    可以看得出,也是nil,没有任何分支命中。那么,是否可以增加一个类似C语言中的switch的default默认处理呢?其实,这个类似之前的typecase,使用的关键字是不同的。

311_common lisp case结构

    看得出,这个已经有了默认的处理行为。而原来的设计不会发生变化。其实,还有一种操作是直接默认报错。我们可以使用ecase或者ccase。

311_common lisp case结构

    刚刚的错误捕获没有看到代码,我们先补充代码设计。接下来,执行未定义操作。

311_common lisp case结构

    这样,得到一个错误提示。使用ccase也有一个类似的效果,这里不做继续的演示了。

完整的emacs and lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp