小编and*_*i-n的帖子

Common Lisp:如何覆盖插槽访问器?

我想控制插槽中保存值的方式以及读取插槽时返回的内容.这是我的班级定义:

(defclass object ()
  ((name :accessor name-access
         :initform 'noname
         :initarg :name)
   (value :accessor value-access
      :initform 10
      :initarg :value)))
Run Code Online (Sandbox Code Playgroud)

我这样创建对象:

(setf obj1 (make-instance 'object))
Run Code Online (Sandbox Code Playgroud)

这是我获取插槽值的方式name:

(name-access obj1)
Run Code Online (Sandbox Code Playgroud)

我如何设置一个新值:

(setf (name-access obj1) 'realname)
Run Code Online (Sandbox Code Playgroud)

覆盖此访问器函数(或方法)的正确方法是什么,以便能够对对象(写入时)进行一些更改并控制返回的值?

谢谢.

overriding accessor common-lisp clos

2
推荐指数
2
解决办法
522
查看次数

标签 统计

accessor ×1

clos ×1

common-lisp ×1

overriding ×1