262_common lisp既然有了if为什么还要用when

本文探讨了Common Lisp中WHEN与IF语句的区别,通过实例对比了两者在逻辑控制上的差异,强调了合理使用WHEN能提高代码可读性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

https://github.com/GreyZhang/g_lisp

    继续lisp的学习,今天看的知识点是common lisp。既然已经有了if,为什么还要用when?

    先做一个小测试:

    上面涉及到的元素有一个let,这个是引入变量的一种方式。除了这个以外,还有一个let*,这两个之间的差异之前也已经做过了小结。

    两个代码块其实逻辑一样,只是引入的变量a的初始值不同。如果变量大于5,那么返回变量值,否则的话返回nil。测试的结果自然也是符合我们预期的。那么,接下来做另一个测试,使用if进行相应的逻辑实现。

    看上去,两种方式完全等同。那么既然已经有了if,为什么我们还需要when?其实,有一种场景下两种结构的逻辑控制是有差异的。做一个测试如下:

    从上面的结果看,其实,如果使用when的时候剩下的一堆内容都将会是执行内容,而最后的执行结果作为返回值。而使用if的时候,第一条代码会是执行内容,同时执行结果作为返回值。若有多余的,将会被认为是else的内容。

    事实上,如果使用了if,通常来说的话我们还会考虑应该还有一个else。因此,如果合理的使用when的话,能够让代码的可读性有很大的提升,不需要做太多的判断就很容易知道接下来代码的可能运行情况。

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

https://github.com/GreyZhang/g_lisp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值