Ruby:如何动态创建现有类的子类?

Dun*_*ock 9 ruby metaprogramming

我正在编写使用Object.const_set创建新类的Ruby代码,它非常适合创建新类并实例化它们的实例.但我希望这些新类继承自我已经硬编码的类.我找不到这样做的方法.这是我的代码:

def create_model_class(klass_name, klass_vars)
    klass = Object.const_set(klass_name, Class.new)
    klass.class_eval do
        define_method(:initialize)
            klass_vars.each_with_index do |name, i|
                instance_variable_set("@"+name[i], name[i])
            end
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

Ser*_*sev 19

Class.new 接受一个参数,它将是超类.

文档:Class.new.

  • 有时,'eval`有新鲜出炉的面包的香气! (5认同)