- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 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/
我正在编写一些方法来为各种元素发出 HTML。每种方法都有相同的输出,但不一定需要相同的输入。 回显 game-board 的方法需要拍player以及(因为每个玩家只能看到自己的棋子) (defme
我想在 CL 中定义一个通用函数,它接受一个可选参数和一个关键字参数,这两个参数都有一个默认值。我试过了 (defgeneric read-one (buffer &optional (sz 1) &
我想在 CL 中定义一个通用函数,它接受一个可选参数和一个关键字参数,这两个参数都有一个默认值。我试过了 (defgeneric read-one (buffer &optional (sz 1) &
我正在编写一个使用 opengl 的普通 lisp 应用程序,随着事情的发展,我意识到我有一些选择要做。我有一堆不同的类,它们都需要代码来快速且频繁地呈现它们,因此我正在考虑使用以下代码结构来执行此操
在阅读基恩的书后,我注意到 defgeneric有一个:method选项,它似乎允许您在通用定义本身中指定一个方法。我见过的大多数文档都在单独的 defmethod 中定义了所有适用的方法。 s。 h
在 CLOS 的包 A 中定义泛型并在包 B 中为该泛型提供方法的正确方法是什么? 提前致谢! 例子: (defpackage :common (:use :cl)) (in-package :co
我想创建相当于 Haskell 中的“嵌套 LET”,我可以在其中引用一些绑定(bind)在外部 LET 中的值。需要注意的是,在内部作用域中定义的函数需要根据其参数的类型进行分派(dispatch)
我是一名优秀的程序员,十分优秀!