2007-12-17

Ruby中的Mixin

关键字: ruby mixin
在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字样。

其中的味道,自己慢慢体会吧。
评论
发表评论

您还没有登录,请登录后发表评论

老王
搜索本博客
博客分类
最近加入圈子
最新评论