ruby模拟多个构造器

在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"
  end
end
a = 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值