可选

可选形参 属于 Common Lisp

2 个练习

关于 可选形参

在 lambda 列表中,用 lambda 列表关键字 &optional 来标记可选形参。可选形参不是必需的,可以有默认值,还可以指定一个“supplied-p 形参”,它的取值为 “true” 还是 “false”,取决于有没有为该形参提供实参。

(defun optional-parameter (&optional (arg -1)) arg)
(optional-parameter)    ; => -1
(optional-parameter 13) ; => 13

可选形参必须放在必需形参之后,但在具名形参或剩余形参之前。 实参先绑定到必需形参,再绑定到可选形参,最后绑定到剩余形参和具名形参。

(defun req-and-opt (req &optional (opt -1)) (list req opt)
(req-and-opt 1)    ; => (1 -1)
(req-and-opt 1 13) ; => (1 13)

虽然多种类型的形参可以彼此组合(例如可选形参和关键字形参),但这可能带来问题,应该谨慎处理。 参见《Practical Common Lisp》中“混合不同类型的形参”一节。

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

学习 可选形参

练习已锁定

再解锁 1 个练习即可练习 可选形参