Inheritance 继承字段与初始字段
我正在做一个项目,我已经有了一些工作程序,但其中一个的初始化变量有问题Inheritance 继承字段与初始字段,inheritance,scheme,racket,Inheritance,Scheme,Racket,我正在做一个项目,我已经有了一些工作程序,但其中一个的初始化变量有问题 (define red-de-flujo% (class grafo% (init-field nodof nodod) (inherit-field N A) (super-make-object) (let ([Ninfo (map (λ (n) (send n get-info)) N)]) (cond ((or (not (in? (send nodof ge
(define red-de-flujo%
(class grafo%
(init-field nodof nodod)
(inherit-field N A)
(super-make-object)
(let ([Ninfo (map (λ (n) (send n get-info)) N)])
(cond
((or (not (in? (send nodof get-info) Ninfo)) (not (in? (send nodod get-info) Ninfo))) (error "nodos fuera de N"))
(else (void))
)
)
(inherit get-nodos get-aristas)
(define/public (get-nodo-fuente) nodof)
(define/public (get-nodo-destino) nodod)
)
)
这段代码可以工作,但是我使用另一种方法来创建类型为red de flujo%
的对象。这是一段代码:
(define/public
(crear-red-de-flujo N A nf nd)
(make-object red-de-flujo% nf nd N A ) <<-- not as in definition
)
(定义/公开)
(东北部的红色荧光灯)
(使对象变为红色%nf nd N A)我认为您不能更改使对象
的继承初始化参数顺序,但您可以通过使用命名初始化参数(通过或)来解决此问题,以获得所需的顺序:
(new red-de-flujo% [N N0] [A A0] [nf nf0] [nd nd0])
其中,N0
,A0
等只是我为您想要传递的实际值设置的占位符
(注意:我原来在这里有一个较长的解释,但我认为它是错误的,所以我删除了它)这是我以前使用代码的方式,我更改了它,因为我认为使用make object看起来更好。谢谢!