【发布时间】:2022-11-17 17:27:01
【问题描述】:
在这个answer 中,用户给出了一个非常清楚的例子,说明类和方法如何协同工作。
我将在这里转载示例:
(defclass human () ())
(defclass dog () ())
(defmethod greet ((thing human))
(print "Hi human!"))
(defmethod greet ((thing dog))
(print "Wolf-wolf dog!"))
(defparameter Anna (make-instance 'human))
(defparameter Rex (make-instance 'dog))
(greet Anna) ;; => "Hi human"
(greet Rex) ;; => "Wolf-wolf dog!"
我的问题是,使用相同的示例:
- 创建通用函数会增加什么价值?
- 为什么泛型函数有用?它们是否像其他 OO 语言中提供结构的实例?
似乎通用函数是在后台隐式创建的(不是 100% 确定)。我注意到,当我玩这个例子时,如果我创建的方法的参数结构与该方法的第一个实例不同,我会得到一个
generic function error。
【问题讨论】:
标签: function class methods common-lisp sbcl