在鸡方案中定义coops对象系统中的泛型的目的是什么
我试图弄清楚在goops库()中定义泛型的目的是什么,如果它能帮助某人(我也不知道CLOS),它与CLOS类似 我可以这样定义类和方法:在鸡方案中定义coops对象系统中的泛型的目的是什么,oop,scheme,chicken-scheme,Oop,Scheme,Chicken Scheme,我试图弄清楚在goops库()中定义泛型的目的是什么,如果它能帮助某人(我也不知道CLOS),它与CLOS类似 我可以这样定义类和方法: (define-class <complex> () (x y)) (define-method (sum (a <complex>) (b <complex>)) (make <complex> 'x (+ (slot-value a 'x) (slot-value b 'x)) 'y (
(define-class <complex> () (x y))
(define-method (sum (a <complex>) (b <complex>))
(make <complex>
'x (+ (slot-value a 'x) (slot-value b 'x))
'y (+ (slot-value a 'y) (slot-value b 'y))))
定义一个通用过程,一个专门用于一个或多个
参数类型。论点定义专门化的
此通用过程应使用的参数分派到正确的
方法。泛型过程可能会收到其他参数,但
这些将不用于确定方法
有人能给我一个简单的例子来解释
定义方法
和定义泛型
之间的区别吗?泛型过程是一种特殊的对象,由(一种或多种)专门方法组成
define generic
定义这样一个对象,并且define method
向它添加方法,如果它不存在,则创建它。泛型过程是一种特殊类型的对象,由(一个或多个)专门方法组成
define generic
定义这样一个对象,并且define method
向它添加方法,如果它不存在则创建它。这是真的。define generic
的主要用途是,如果您想声明应该存在一个泛型过程,但还没有实现它。基本上,您可以用它定义一个可能不完整的API,很像一个抽象基类:define generic
确保泛型过程存在,因此不会出现“unbound variable”错误。即使您没有首先使用define generic
声明define method
也是有效的,这只是为了方便起见。define generic
的主要用途是,如果您想声明应该存在一个泛型过程,但还没有实现它。基本上,您可以用它定义一个可能不完整的API,很像一个抽象基类:define generic
确保泛型过程存在,因此不会出现“unbound variable”错误。即使您没有首先使用define generic
声明define method
也是有效的。
(define-generic (sum <complex> <complex>))
[syntax] (define-generic (NAME ARGUMENT ...))