314_common lisp cond结构

157 篇文章 3 订阅

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

https://github.com/GreyZhang/g_lisp

    继续emacs以及lisp的学习,接下来看看common lisp中的cond结构。在此之前,先看一段代码:

    为了编辑更加顺手,我在代码编辑的时候没有使用lispbox的emacs而是使用了我日常用的emacs。之后再在lispbox中编译运行,测试得到如下结果:

    看上去是完成了一些列的判断。但是,这种判断逻辑实现似乎是有一点丑陋的。如何改进呢?如果在C语言中,类似的方式我们一般会采用switch case的结构来实现。那么,在lisp中是否也有类似的结构呢?其实也是有的,那就是cond。接下来,代码重写如下:

    测试效果:

    从测试结果看,实现了之前的功能。但是,这个代码实现上更加简洁。其实,我觉得一定程度上这是一个改进版的C语言switch分支,省略了容易让人栽跟头的break。不过,这也不是完全等同的switch,从下面的例子就能够看得出。

    测试结果如下:

    因此,这里其实还是逃不开一个if的结构,不断去查询下面的信息。如果分支中存在多个同时命中的条件,后面的将无法得到执行的机会。而且,这是一个宏而不是一个函数,通过slime的展开功能能够看得到其对等的代码结构如下:

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

https://github.com/GreyZhang/g_lisp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值