动态定义类变量和类实例变量
class Mine attr_accessor :some_var def intialize @some_var = true end def my_number num self.class.__send__(:attr_accessor, "my_#{num}") self.__send__("my_#{num}=", num) endenddude = Mine.newdude.my_number 1puts dude.my_1#=> 1#or def my_number num self.instance_variable_set "@my_#{num}", num self.class.class_eval do define_method("my_#{num}") { num } end end#orclass Mine # ... def my_number num class << self attr_accessor "my_#{num}" end self.send("my_#{num}=", num) endendclass Widget # class instance variable pattern class << self; attr_accessor :color; end def show_color() "This widget is #{self.class.color}" endendclass WidgetR < Widget @color = "Russet"endclass WidgetC < Widget @color = "Cordovan"endclass WidgetL < Widget @color = "Liver"endWidgetR.new.show_color #=> "This widget is Russet"#orclass A @count = 0 @@count = 0 def self.inherited(subclass) subclass.instance_eval { @count = 0 } end def self.num_instances @count end def self.num_subclass_instances @@count end def self.new @count += 1 @@count += 1 super endendclass B < Aendclass C < BendA.newB.newA.newB.newB.newC.newA.num_instances #=> 2A.num_subclass_instances #=> 6B.num_instances #=> 3B.num_subclass_instances #=> 6C.num_instances #=> 1C.num_subclass_instances #=> 6