common-lisp 休息参数
示例
可以&REST在所需参数之后的关键字中给定一个单个剩余参数。如果存在这样的参数,则该函数可以使用多个参数,这些参数将被分组到其余参数的列表中。请注意,该变量CALL-ARGUMENTS-LIMIT确定可在函数调用中使用的最大参数数目,因此,参数数目限制为特定于实现的最小值50或更多的参数。
(defun foobar (x y &rest rest)
(format t "X (~s) and Y (~s) are required.~@
The function was also given following arguments: ~s~%"
x y rest))
(foobar 10 20)
; X (10) and Y (20) are required.
; The function was also given following arguments: NIL
;=> NIL
(foobar 10 20 30 40 50 60 70 80)
; X (10) and Y (20) are required.
; The function was also given following arguments: (30 40 50 60 70 80)
;=> NIL休息和关键字参数一起
其余参数可以在关键字参数之前。在这种情况下,它将包含用户给出的属性列表。关键字值仍将绑定到相应的关键字参数。
(defun foobar (x y &rest rest &key (z 10 zp))
(format t "X (~s) and Y (~s) are required.~@
Z (~s) is a keyword argument. It ~:[wasn't~;was~] given.~@
The function was also given following arguments: ~s~%"
x y z zp rest))
(foobar 10 20)
; X (10) and Y (20) are required.
; Z (10) is a keyword argument. It wasn't given.
; The function was also given following arguments: NIL
;=> NIL
(foobar 10 20 :z 30)
; X (10) and Y (20) are required.
; Z (30) is a keyword argument. It was given.
; The function was also given following arguments: (:Z 30)
;=> NIL&ALLOW-OTHER-KEYS可以在lambda列表的末尾添加关键字,以允许用户提供未定义为参数的关键字参数。他们将进入其余列表。
(defun foobar (x y &rest rest &key (z 10 zp) &allow-other-keys)
(format t "X (~s) and Y (~s) are required.~@
Z (~s) is a keyword argument. It ~:[wasn't~;was~] given.~@
The function was also given following arguments: ~s~%"
x y z zp rest))
(foobar 10 20 :z 30 :q 40)
; X (10) and Y (20) are required.
; Z (30) is a keyword argument. It was given.
; The function was also given following arguments: (:Z 30 :Q 40)
;=> NIL
热门推荐
10 默克尔离职祝福语简短
11 小孩生日祝福语简短励志
12 女儿生日简短祝福语幽默
13 鼠年元旦生日祝福语简短
14 高考加油祝福语简短押韵
15 赞美祝福语大全简短的
16 结婚祝福语简短精彩短句
17 学生励志祝福语大全简短
18 企业新春祝福语简短大全