Ruby中的Mixin (混入)

转自:http://blog.163.com/wangbo_tester/blog/static/128067921200981741623182/


在Ruby中,我们可以把一个模块混入(Mixin)到对象中,从而达到类似多重继承的效果。

下面举几个例子来仔细阐述一下这个问题:

首先定义一个Module:

module Foo
def bar
    puts "foo";
end
end


然后我们把这个模块混入到对象中去:

class Demo
include Foo
end
 

如上编码后,模块中的实例方法就会被混入到对象中:

d=Demo.new
d.bar


会输出foo字样。

下面我们重新定义一下Demo类:

class Demo
extend Foo
end


这个时候如果你得到的就是静态调用:

Demo.bar

会输出foo字样。

下面我们再来重新定义一下Demo类:

class Demo
def bar
    puts "demo"
end
end


然后使用extend方法调用:

d=Demo.new
d.extend(Foo)
d.bar


会输出foo字样。

下面我们再来重新定义一下Demo类:

class Demo
include Foo

def bar
    puts "demo"
end
end


然后使用extend方法调用:

d=Demo.new
d.extend(Foo)
d.bar


会输出demo字样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值