是否有任何黑客用自定义覆盖类名?

时间:2012-02-20 15:40:12

标签: ruby oop

假设我有一个班级Set我想要这样的东西,例如

class Set
  def initialize(new_name)
    self.class = new_name
  end
end

如果您执行x = Set.new("Dog")之类的操作,x.class将返回Dog而不是Set。上面的课程也没有用!

1 个答案:

答案 0 :(得分:3)

我明白了!这应该工作;)

class Obj
  def initialize(name)
    @klass = Object.const_set(name.capitalize, Class.new()).new()
  end
end

试一试:

dog = Obj.new("dog")
dog.class #=> Dog
dog.class.name #=> "Dog"