311_common lisp case结构
完整的emacs and lisp的学习集合整理如下:
https://github.com/GreyZhang/g_lisp
继续emacs以及lisp的学习,这一次看一下common lisp中的case结构。首先,我们设计一段测试代码如下:
通过上面的测试,可以看得出,设计的函数能够识别 a b c三个关键字。
我们通过提示看一下case结构,可以看得出后面的这些识别信息其实是key,也就是关键字。如果输入一个没有定义的关键字会是什么情况呢?
如果是没有定义的关键字,输出是nil。如果,输入的是一个非关键字的信息呢?
可以看得出,也是nil,没有任何分支命中。那么,是否可以增加一个类似C语言中的switch的default默认处理呢?其实,这个类似之前的typecase,使用的关键字是不同的。
看得出,这个已经有了默认的处理行为。而原来的设计不会发生变化。其实,还有一种操作是直接默认报错。我们可以使用ecase或者ccase。
刚刚的错误捕获没有看到代码,我们先补充代码设计。接下来,执行未定义操作。
这样,得到一个错误提示。使用ccase也有一个类似的效果,这里不做继续的演示了。
完整的emacs and lisp的学习集合整理如下: