ruby - 通过二维数组生成类继承关系树

 mobiledu2502882733 发布于 2022-10-25 03:29

我最近在整理公司项目中的类继承关系,使用 Ruby 抽取出了一个类及其父类的组合,类似
[[B,A], [C,A], [E,D], [F,B] ...]
其中 [B,A] 中 B 为子类,A为父类,根类不只有一个,比如上例中的 A,D。我希望能能生成这些类的关系图:

[
    A=>[
          B=>[F],
          C
        ],
    D=>[E]
]

类似上述结构,或者能够示意出类的继承关系就行。语言最好是 Ruby,其他语言也可以。
各位有什么好的思路或者现成的库可以借鉴吗?

1 个回答
  • 先写个生成各个类下的子类。

    a = [['B','A'], ['C','A'], ['E','D'], ['F','B'], ['G','E']]
    b = ['A','B','C','D','E','F','G'] 
    b.map{|e| a.map{|d|  d[0] if d[-1] == e}}
    

    输出:

    [["B", "C", nil, nil, nil],
     [nil, nil, nil, "F", nil],
     [nil, nil, nil, nil, nil],
     [nil, nil, "E", nil, nil],
     [nil, nil, nil, nil, "G"],
     [nil, nil, nil, nil, nil],
     [nil, nil, nil, nil, nil]]
    

    每行代表一个类的子类集合。

    2022-10-26 14:14 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有