11.2 类与实例 (Class and Instances)
在 4.6 节时,我们看过了创建结构的两个步骤:我们调用 defstruct
来设计一个结构的形式,接着通过一个像是 make-point
这样特定的函数来创建结构。创建实例 (instances)同样需要两个类似的步骤。首先我们使用 defclass
来定义一个类别 (Class):
(defclass circle ()
(radius center))
这个定义说明了 circle
类别的实例会有两个槽 (slot),分别名为 radius
与 center
(槽类比于结构里的字段 「field」)。
要创建这个类的实例,我们调用通用的 make-instance
函数,而不是调用一个特定的函数,传入的第一个参数为类别名称:
> (setf c (make-instance 'circle))
#<CIRCLE #XC27496>
要给这个实例的槽赋值,我们可以使用 setf
搭配 slot-value
:
> (setf (slot-value c 'radius) 1)
1
与结构的字段类似,未初始化的槽的值是未定义的 (undefined)。
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .