在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
直接上代码: 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中提取很多行为添加到我们的类中。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论