Dynamically creating class in Ruby

后端 未结 3 2069
后悔当初
后悔当初 2020-12-29 12:43

I have a class that should look something like this:

class Family_Type1
    @people = Array.new(3)
    @people[0] = Policeman.new(\'Peter\', 0)
    @people[1         


        
3条回答
  •  感情败类
    2020-12-29 13:19

    From what I understand, you need meta-programming. Here is a snippet of code for creating classes dynamically (on the fly) with initialize method that initializes instance variables-

    class_name = 'foo'.capitalize
    klass = Object.const_set(class_name,Class.new)
    
    names = ['instance1', 'instance2'] # Array of instance vars
    
    klass.class_eval do
      attr_accessor *names
    
      define_method(:initialize) do |*values|
        names.each_with_index do |name,i|
          instance_variable_set("@"+name, values[i])
        end
      end
      # more...
    end
    

    Hope you can tweak it to suit your requirements.

提交回复
热议问题