У меня есть функция, как этогоКак использовать & key и & rest в cl-defun togather?
(cl-defun foo (a b c d e &rest f)
nil)
Аргументы c
, d
и e
являются nil
80% времени.
Чтобы сделать это выглядит лучше, я делаю это:
(cl-defun foo (a b &rest f &key c d e &allow-other-keys)
nil)
Когда c
, d
и e
не предусмотрено, это нормально.
Однако, если один из них используется, f
получает неправильный аргумент. Например:
(foo 1 2 :c 6 3 4 5)
;; ==> expected: a=1, b=2, c=6, f= (3 4 5)
;; ==> real case: a=1, b=2, c=6, f= (:c 6 3 4 5)