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看起来更好。谢谢!