如何在Ruby中定义没有'class'语句的类?

mar*_*uca 4 ruby class

我有很多类要定义,但我不想重复以下工作:

class A < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

是否有任何声明语句来定义类而不使用该class语句?

mol*_*olf 7

如果事先知道需要定义哪些类,那么class为了清楚起见,您应该生成使用关键字明确定义它们的代码.

但是,如果您确实需要动态定义它们,可以Object.const_set结合使用Class.new.要定义几个子类ActiveRecord::Base:

%w{A B C D}.each do |name|
  Object.const_set name, Class.new(ActiveRecord::Base)
end
Run Code Online (Sandbox Code Playgroud)

上面的结果是四个新的名字A..D,所有的孩子ActiveRecord::Base.


Far*_*rel 5

在文本编辑器中使用宏或脚本可能更好.以编程方式创建类使得它们难以记录.