CLOS でスロットのタイプを強制するにはどうすればよいですか。
それが答えになることはわかってい(locally (declare (optimize safety))) (defclass foo () ((num :type number...
ますが、移植性が十分ではないと思います。(CLISP 2.49 ではなく、SBCL のみ)
または、それらを実装する必要がありますか?(指定された s に続く各スロットをチェックするため:type
。)
- デフメソッド
:after (setf SLOT)
。 - デフメソッド
: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 *)