ruby模拟多个构造器

来源:互联网 发布:php 字节数组 编辑:程序博客网 时间:2024/04/29 20:36

在ruby中没有像c++或者ruby中的构造器,可是我们依然能够创建出类似的多个构造器:

 class ColoredRectangle  def initialize(r, g, b, s1, s2)     @r, @g, @b, @s1, @s2 = r, g, b, s1, s2  end  def ColoredRectangle.white_rect(s1, s2)     new(0xff, 0xff, 0xff, s1, s2)  end  def ColoredRectangle.gray_rect(s1, s2)     new(0x88, 0x88, 0x88, s1, s2)  end  def ColoredRectangle.colored_square(r, g, b, s)     new(r, g, b, s, s)  end  def ColoredRectangle.red_square(s)     new(0xff, 0, 0, s, s)  end  def inspect     "#@r #@g #@b #@s1 #@s2"  endenda = ColoredRectangle.new(0x88, 0xaa, 0xff, 20, 30)b = ColoredRectangle.white_rect(15,25)c = ColoredRectangle.red_square(40)

如果属性过多,我们可以使用

 class PersonalComputer     attr_accessor :manufacturer,                   :model, :processor, :clock,                   :ram, :disk, :monitor,                   :colors, :vres, :hres, :net      def initialize(&block)       instance_eval &block     end      # Other methods   end    desktop = PersonalComputer.new do    self.manufacturer = "Acme"    self.model = "THX-1138"    self.processor = "986"    self.clock = 9.6        # GHz     self.ram = 16           # Gb     self.disk = 20          # Tb     self.monitor = 25       # inches     self.colors = 16777216     self.…………………………………………………………………………

参考地址:http://www.verydemo.com/demo_c119_i3699.html

0 0
原创粉丝点击