Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在鸡方案中定义coops对象系统中的泛型的目的是什么_Oop_Scheme_Chicken Scheme - Fatal编程技术网

在鸡方案中定义coops对象系统中的泛型的目的是什么

在鸡方案中定义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 (

我试图弄清楚在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 (+ (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 ...))