194_common lisp的几种函数定义

  1. 类似C语言的空参、空返回的函数。

运行:

  1. 类似C++的重载,参数传入数目可变

运行效果:

以上函数的参数变化也是有一个范围的,最小为不加任何可选的参数,最大为加上所有的可选参数。如果不在这个范围内,调用函数的时候会报错。

  1. 类似Python中形参具有默认数值

运行:

4, 类型3的变型:最多只有一个参数

运行:

5,更加灵活的可选参数,可以提示可选参数是否被传入。

运行:

从上面的结果可以看得出,即使是可选的参数的数值使用了默认的数值,在函数调用的时候也会提示可选参数被填入的信息。

6,剩余形参

典型的例子是+函数,后面的参数个数可以选择多个。从实现方式上来看,这个实现可能会用到递归之类的思想。暂时我的学习还是处于初级阶段,后面再尝试这样的一个软件实现。

7,更加灵活的可选参数,可以指定某个参数是否选择默认参数

运行:

除非传入参数为空,否则必须指定关键字。如果关键字的顺序变化,不会影响到执行结果。这种用法还可以结合上面的函数定义技巧,演化出更加复杂的方式。

8,多特性结合

运行:

上面是运行的几种情况,有成功的有不成功的。似乎,这种方式可以用来设置类似于open这样带有不同参数属性设置的函数。

9,函数的返回值

默认情况下,函数返回最后一个表达式的求值结果。如果想要返回值,有一个类似C语言中return的表达式return-from。Common lisp中的这个设计似乎没有C语言那么简洁,这个表达式的参数必须先加上代码块的名称。

运行:

10,高阶函数

这是把函数当做数据来用的一种方式,《实用common lisp编程》书中给出的例子有很多语言元素没有提前介绍就使用了,因此没有理解透的我这里不总结了。后面回头理解了再整理。

11, 匿名函数

这个前面我已经接触到了,其实应该就是lambda表达式了。

这里面多少用到了一点高阶函数,但是其实是没有用到其精髓,能够感觉得出这个高阶函数是为什么设计的,但是我现在还缺少一些基础的语料来辅助我事件。

运行:

 

发布了812 篇原创文章 · 获赞 163 · 访问量 172万+

猜你喜欢

转载自blog.csdn.net/grey_csdn/article/details/103931418