首页 > 代码库 > Ruby学习之mixin
Ruby学习之mixin
直接上代码:
module Action def jump @distance = rand(4) + 2 puts "I jumped forward #{@distance} feet!" endendclass Rabbit include Action attr_reader :name def initialize(name) @name = name endendclass Cricket include Action attr_reader :name def initialize(name) @name = name endendpeter = Rabbit.new("Peter")jiminy = Cricket.new("Jiminy")peter.jumpjiminy.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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。