gpt4 book ai didi

common-lisp - 具有可选参数和关键字参数的 defgeneric

转载 作者:行者123 更新时间:2023-12-01 22:56:42 25 4
gpt4 key购买 nike

我想在 CL 中定义一个通用函数,它接受一个可选参数和一个关键字参数,这两个参数都有一个默认值。我试过了

(defgeneric read-one (buffer &optional (sz 1) &key (signed '()))

但这会抛出 Invalid &OPTIONAL argument specifier #1=(SZ 1)

那么做这种事情的正确方法是什么?

最佳答案

据我所知,您不能在 defgeneric 中提供默认值。您必须在具体实现中执行此操作 (defmethod)

(defgeneric read-one (buffer &optional sz &key signed))

(defmethod read-one (buffer &optional (sz 1) &key (signed '()))
(format t "~a, ~a, ~a~%" buffer sz signed))

CL-USER> (read-one (list 1 2 3) )
;; (1 2 3), 1, NIL
;; NIL

;; CL-USER> (read-one (list 1 2 3) 101 :signed t)
;; (1 2 3), 101, T
;; NIL

关于common-lisp - 具有可选参数和关键字参数的 defgeneric,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72990775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com