首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承字段与init字段

继承字段与init字段
EN

Stack Overflow用户
提问于 2014-12-09 02:45:24
回答 1查看 102关注 0票数 1

我正在做一个项目,我已经有了一些工作过程,但是我在其中一个项目的初始化变量上遇到了问题。

代码语言:javascript
复制
(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)
    )
  )

这段代码可以工作,但是我使用另一种方法来实现make-objectred-de-flujo%类型。这是一段代码:

代码语言:javascript
复制
(define/public
      (crear-red-de-flujo N A nf nd)
      (make-object red-de-flujo% nf nd N A ) <<-- not as in definition
      )

问题是,流网络(red- defined %)是由一组节点、一组边缘和两个分离的节点定义的。

我的问题是:是否有办法将继承的字段置于init字段之上?编写red-de-flujo%的方式(使用继承)迫使我先发送init字段,然后再发送继承字段。我希望能够做到这样的事情:(make-object red-de-flujo% N A nf nd)而不失去继承。

我已经尝试过更改代码中语句的顺序,但这是一样的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-09 06:14:52

我不认为您可以更改make-object的继承初始化参数顺序,但是您可以通过使用命名初始化参数(通过newinstantiate)来获得您想要的任何顺序来解决这个问题:

代码语言:javascript
复制
(new red-de-flujo% [N N0] [A A0] [nf nf0] [nd nd0])

其中,N0A0等只是我为要传入的实际值放置的占位符。

(注:我最初在这里有一个较长的解释,但我认为这是错误的,所以我删除了)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27370656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档