1

如何在 CLOS 中强制执行 slot 的类型。

我知道这(locally (declare (optimize safety))) (defclass foo () ((num :type number...可能是答案,但我认为它不够便携。(仅适用于 SBCL,不适用于 CLISP 2.49)

或者,我应该实施这些事情吗?(用于检查指定:types 之后的每个插槽。)

  1. 定义方法:after (setf SLOT)
  2. 定义方法:after initialize-instance

有没有更简单的方法来做到这一点?

而且,钩子“插槽更新”是否有任何“MOP”或元类?

谢谢。

编辑:我认为这与 CLOS 不是同一个问题:如何使插槽具有强制类型的符号向量?,因为我需要有关“元类”或slot-value-with-class事物的更多信息。

编辑:我发现closer-mop提供了更可取的便携方式。

CL-USER> (nth 0 (closer-mop:class-slots (find-class 'foo-class)))
CL-USER> (closer-mop:slot-definition-type *)
4

0 回答 0