我在我的代码库中有大约两个宏(数量还在增加),看起来像这样:
(defmacro def-stat-method (method-name stat)
`(progn
(defmethod ,method-name ((monster monster))
(getf (stats monster) ,stat))
(defmethod (setf ,method-name) (value (monster monster))
(setf (getf (stats monster) ,stat) value))))
并且这个:
(defmacro def-energy-method (method-name stat)
`(progn
(defmethod ,method-name ((monster monster))
(getf (energies monster) ,stat))
(defmethod (setf ,method-name) (value (monster monster))
(setf (getf (energies monster) ,stat) value))))
每个宏都具有以下调用语法:(def-stat-method ranged-weapon :ranged-weapon)
。我想要一个宏
(def-foo-method macro-name method)
,以便将(def-foo-method def-stat-method stats)
扩展为上面的第一个示例。我是Lisp的新手,不太知道该怎么做。感谢任何帮助。