关键

关键字参数 属于 Common Lisp

1 个练习

关于 关键字参数

在 Common Lisp 中,命名参数被称为关键字参数。

关键字参数由 lambda 列表中的&key lambda 列表关键字来指定。关键字参数不是必需的,可以有默认值,也可以指定一个“supplied-p 参数”,它的值是“true”还是“false”,取决于是否给该参数传入了实参。

(defun keyword-parameter (&key (arg -1) arg)
(keyword-parameter)         ; => -1
(keyword-parameter :arg 13) ; => 13

在传给函数的实参中,关键字参数通过它们的“关键字名”来指定。默认情况下,关键字名是参数名的关键字符号形式(也就是说,关键字参数 name 的关键字名是 :name)。也可以用一个由关键字名和参数名组成的列表来代替单独的参数名,从而为关键字参数指定另一个名字:

(defun other-keyword-name (&key ((other-name arg))) (list arg))
(other-keyword-name 'other-name 5) ; => (5)

虽然多种类型的参数可以与其他类型的参数(可选参数和关键字参数)组合使用,但这样做可能会出现问题,应当谨慎处理。 参见《Practical Common Lisp》中关于"混用不同的参数类型"的一节。

通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 关键字参数