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

发布于 2022-08-30 00:11:26 字数 352 浏览 13 评论 0

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

西瑶 2022-09-06 00:11:26

先写个生成各个类下的子类。

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]]

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文