defgeneric

Common Lisp对象系统(CLOS)的一个小小的实例

血红的双手。 提交于 2019-12-06 06:29:27
本文是对《Practical Common Lisp》第16章的简单代码注解。CLOS为Common Lisp Object System的缩写,与所有面向对象语言相同,CLOS是基于类组织起来的,所不同的是广义函数而非消息传递是对象与方法通信的桥梁。 以下是实现的几个简单功能,模拟电梯升降的逻辑可能有不妥之处,但不影响对简单CLOS的表述。 ;;;;;; 电梯模拟程序 ;;;;; (defclass lift () ((lift-length :initarg :lift-length :initform 3) (lift-wide :initarg :lift-wide :initform 2) (lift-height :initarg :lift-height :initform 3) (lift-status :initarg :lift-status :initform 1) (floor-count :initform 8 :reader floor-count :writer (setf floor-count)) (floor-number-now :initform 1 :reader floor-number-now :writer (setf floor-number-now)))) #| @brief 电梯运行延时 @param seconds --