gpt4 book ai didi

common-lisp - 覆盖 :INITFORM of the class slot in subclass

转载 作者:行者123 更新时间:2023-12-05 08:27:32 25 4
gpt4 key购买 nike

我需要稍微概括一下子类中的默认槽值。

例子:

(defclass class-a ()
((slot-1 :initarg :slot-1 :initform #'identity)
<...> other-slots<...>))

它的子类是

(defclass class-b (class-a)
((slot-2 :initarg :slot-2 :initform 0)))

但是#'IDENTITY作为默认值还是不够好,稍微通用一些

(lambda (&rest x) x)

会更适合,因为它需要多个参数(我认为它与 Liskov 原则不矛盾)。为 CLASS-B 覆盖 :INITFORM 的最佳方法是什么?

  1. 我可以为 CLASS-B 添加 INITIALIZE-INSTANCE :AFTER 并查看 SLOT-1 是否设置为 #' IDENTITY 并覆盖它。
  2. 如果我在 CLASS-B 中重新引入 SLOT-1 会怎样?我想避免它,因为我必须为它重复所有插槽信息。

最佳答案

What happens if I reintroduce SLOT-1 in CLASS-B?

有效。

I would want to avoid it as I would have to repeat all the slot information for it.

没有。只有区别。

关于common-lisp - 覆盖 :INITFORM of the class slot in subclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38633305/

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