如何在CLOS中强制执行插槽类型。
我知道(locally (declare (optimize safety))) (defclass foo () ((num :type number...
可以回答,但我认为它不够便携。 (仅限SBCL,而不是CLISP 2.49)
或者,我应该实施这些东西吗? (用于检查指定:type
s后的每个插槽。)
:after (setf SLOT)
。:after initialize-instance
。有没有更简单的方法呢?
并且,是否有任何“MOP”或元类用于钩子“插槽更新”?
感谢。
编辑:我认为这与CLOS: How to make a slot have an enforced type of vector of symbols?的问题不同,因为我需要有关“元类”或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 *)