小编Lal*_*lzy的帖子

将两个变量组合成宏中的一个函数名

我正在玩macros和clos,在那里我创建了一个"对象"宏来创建实例

(defmacro object (class &rest args)
  `(make-instance ',class ,@args))
Run Code Online (Sandbox Code Playgroud)

现在这样做,我也想要为clos创建的访问器函数做类似的事情.例:

(defclass person () ((name :accessor person-name :initarg :name)))
Run Code Online (Sandbox Code Playgroud)

然后创建实例

(setf p1 (object person :name "tom"))
Run Code Online (Sandbox Code Playgroud)

现在从对象中获取名称显然我会调用person-name,但是就像对象宏一样,我想创建一个"获取"宏来执行此操作.理想情况下:

(gets person name p1) which then would return the name.
Run Code Online (Sandbox Code Playgroud)

那么问题就是人和名字(人名)的绑定以及如何做到这一点.反正有没有将这两个参数绑定在宏中?有点像:

(defmacro gets (class var object)
  `(,class-,var ,object))
Run Code Online (Sandbox Code Playgroud)

macros clisp common-lisp

3
推荐指数
1
解决办法
782
查看次数

标签 统计

clisp ×1

common-lisp ×1

macros ×1