码迷,mamicode.com
首页 > 其他好文 > 详细

Ruby学习之mixin

时间:2014-10-03 00:29:03      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   ar   for   sp   div   

直接上代码:

module Action
  def jump
    @distance = rand(4) + 2
    puts "I jumped forward #{@distance} feet!"
  end
end

class Rabbit
  include Action
  attr_reader :name
  def initialize(name)
    @name = name
  end
end

class Cricket
  include Action
  attr_reader :name
  def initialize(name)
    @name = name
  end
end

peter = Rabbit.new("Peter")
jiminy = Cricket.new("Jiminy")

peter.jump
jiminy.jump
----------------------------------------------------------------------
输出:
I jumped forward 3 feet!
I jumped forward 4 feet!
nil

Ruby学习之module已经介绍了module

当一个module用来把一些行为和信息混合进一个类, 那么这种行为叫做mixin

mixin允许我们定制一个类而不需要重写这个类。

上面的代码就用到了mixin

在Action这个module中定义了jump方法。把Action包含进了类Rabbit和Cricket,那么这两个类就具有了jump这个方法,所以Rattit和Cricket的实例peter和jiminy才可以调用jump。

你也许发现了, mixin赋予了我们类似类的多继承的能力, 通过mixin这种技巧我们可以从很多module中提取很多行为添加到我们的类中。

 

Ruby学习之mixin

标签:style   blog   http   color   io   ar   for   sp   div   

原文地址:http://www.cnblogs.com/tardis/p/4004521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!