gpt4 book ai didi

common-lisp - 匿名 CLOS 实例

转载 作者:行者123 更新时间:2023-12-02 06:06:14 26 4
gpt4 key购买 nike

在 Common Lisp 中,是否有一种白话,可以像在 Java 中那样为一次性的“小型接口(interface)实现者”定义匿名类?

例如,

this.addListener(new Listener() {
public void listen() {...}
});

作为:

(defgeneric listen (object))

(add-listener #<this>
(make-anonymous-instance
(listen (object) ...)))

最佳答案

在 Common Lisp 中,方法属于泛型函数,而不是类,因此匿名实例没有任何意义。可以实现类似的目的,具体取决于具体情况、槽关闭或 EQL 专家。

扩展以响应评论:

在 CL 中,不在顶层定义方法是可能的,但这并不是一个好主意。我建议只添加正常的方法,如果不需要实际实例,可能 EQL 专门用于符号或其他常量。

如果内联定义行为更有用,那么它表明接口(interface)设计错误,应该采用闭包而不是对象。如果你不能修复接口(interface)本身,那么你可以定义一个类,它的唯一目的是包装一个闭包并添加一个调用该闭包的方法,然后只创建一个具有适当行为的实例。

关于common-lisp - 匿名 CLOS 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9398835/

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