gpt4 book ai didi

ruby-on-rails - 如何在不首先在 Ruby 中实例化的情况下获取所有子类的列表

转载 作者:数据小太阳 更新时间:2023-10-29 06:52:17 26 4
gpt4 key购买 nike

如果我有 4 个具有以下层次结构的类:

class MainClass < ActiveRecord::Base
...
end

class SubClassA < MainClass
...
end

class SubClassB < MainClass
...
end

class SubClassC < MainClass
...
end

如何在不遍历和创建每个其他类的实例的情况下获得 MainClass 的子类列表?

在新的 IRB session 中,我可以进去说

irb(main)> MainClass.descendants
=> []

但是,如果我遍历并创建每个子类的实例,我将看到以下内容

irb(main)> SubClassA.new
=> #<SubClassA ...>
irb(main)> SubClassB.new
=> #<SubClassB ...>
irb(main)> SubClassC.new
=> #<SubClassC ...>
irb(main)> MainClass.descendants
=> [SubClassA(...), SubClassB(...), SubClassC(...)]

我基本上是在寻找一种以编程方式提供所有子类的方法,这样将来当我想添加 SubClassD、SubClassE 等时,我不必担心每个子类都在用户之前在代码中实例化可以看到他们。

最佳答案

这是开发模式的人工产物,仅在首次引用时加载类:解释器尚未读取这些文件 - 就 ruby​​ 而言,这些类确实还不存在

解决方法是放置

require_dependency "subclass_a"
require_dependency "subclass_b"
....

底部是主类的文件(在类定义之外)

关于ruby-on-rails - 如何在不首先在 Ruby 中实例化的情况下获取所有子类的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34817604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com