(1) Examples of &optional and &rest parameters:

((lambda (a b) (+ a (* b 3))) 4 5) => 19 
((lambda (a &optional (b 2)) (+ a (* b 3))) 4 5) => 19 
((lambda (a &optional (b 2)) (+ a (* b 3))) 4) => 10 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x))) 
   => (2 nil 3 nil nil) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6) 
   => (6 t 3 nil nil) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6 3) 
   => (6 t 3 t nil) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6 3 8) 
   => (6 t 3 t (8)) 
((lambda (&optional (a 2 b) (c 3 d) &rest x) (list a b c d x)) 
 6 3 8 9 10 11) 
   => (6 t 3 t (8 9 10 11))

(2) Examples of &key parameters:

((lambda (a b &key c d) (list a b c d)) 1 2) 
   => (1 2 nil nil) 
((lambda (a b &key c d) (list a b c d)) 1 2 :c 6) 
   => (1 2 6 nil) 
((lambda (a b &key c d) (list a b c d)) 1 2 :d 8) 
   => (1 2 nil 8) 
((lambda (a b &key c d) (list a b c d)) 1 2 :c 6 :d 8) 
   => (1 2 6 8) 
((lambda (a b &key c d) (list a b c d)) 1 2 :d 8 :c 6) 
   => (1 2 6 8) 
((lambda (a b &key c d) (list a b c d)) :a 1 :d 8 :c 6) 
   => (:a 1 6 8) 
((lambda (a b &key c d) (list a b c d)) :a :b :c :d) 
   => (:a :b :d nil)

(3) Examples of mixtures:

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1)   => (1 3 nil 1 ())
((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 2)   => (1 2 nil 1 ()) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 :c 7)   => (:c 7 nil :c ()) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 6 :c 7)   => (1 6 7 1 (:c 7)) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 6 :d 8)   => (1 6 nil 8 (:d 8)) 

((lambda (a &optional (b 3) &rest x &key c (d a)) 
   (list a b c d x)) 
 1 6 :d 8 :c 9 :d 10)   => (1 6 9 8 (:d 8 :c 9 :d 10))

相关文章:

  • 2022-01-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-16
  • 2021-10-23
  • 2022-12-23
  • 2021-07-29
  • 2022-12-23
  • 2021-09-16
  • 2021-06-01
相关资源
相似解决方案