methods - 具有列表类型的定义方法
问题描述
是否可以在 Common Lisp 中定义具有“列表类型”的方法?
(defgeneric show (obj))
(defmethod show ((obj coordinate)) ;; Works
...)
(defmethod show ((obj [LIST OF coordinate])) ;; How to?
...)
解决方案
您可以在list
类型上编写方法,但不能在任意类型说明符上编写方法。来自超规格:
如果 parameter-specializer-name 是一个符号,它会命名一个类;如果它是一个列表,它的形式是(eql eql-specializer-form)。
相关问题:任意类型说明符上的 Defmethod?
这样的事情可能对你有用:
(defmethod show ((obj coordinate))
...)
(defmethod show ((obj null)))
(defmethod show ((obj cons)) ;; Or just loop it.
(show (car obj))
(show (cdr obj)))
推荐阅读
- c - Linux/POSIX ABI 是否定义 int 的大小?
- .net - GitHub上DotNet repro中“@dotnet-bot test this please”背后的逻辑是什么?
- amazon-web-services - aws lambda 和 Rds 中的握手不活动超时错误
- reactjs - 启动我的反应本机应用程序时出现参考错误
- json - 在查询中解构深层嵌套的 json
- javascript - 选择类的 .child 元素应该在其他 .child 元素之上,每个 .child 都在 .parent 元素内,具有绝对位置
- swift - 恢复进入后台模式的外围 BLE 服务
- jquery - 在 URL (Rails) 中存储 AJAX 参数
- javascript - 为什么 XMLHttpRequest.setRequestHeader() 将 undefined 或 null 类型设置为字符串?
- css - 在 row.getRowProps() 中更改 Material-ui 表格样式