Ruby's Louvre

每天学习一点点算法

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

ruby的include与extend

ruby提供了强大的继承机制,有关继承的方法很多。最简单就是“<<”,但还可以对要继承的东西进行细分,是把它添加到类中呢,还是实例中,这正是本文要介绍的内容。

module Foo
  def foo
    puts 'heyyyyoooo!'
  end
end
 
class Bar
  include Foo
end
 
Bar.new.foo # heyyyyoooo!
Bar.foo # NoMethodError: undefined method ‘foo’ for Bar:Class
 
class Baz
  extend Foo
end
 
Baz.foo # heyyyyoooo!
Baz.new.foo # NoMethodError: undefined method ‘foo’ for #<baz:0x1e708>
</baz:0x1e708>

我们可以看到通过包含(include),为目标类添加一些实例方法。而扩展则恰恰相反,为目标类添加相应的类方法。虽然同是一个模块,但方法的不同,会产生不同的效果。

如果您觉得此文有帮助,可以打赏点钱给我支付宝1669866773@qq.com ,或扫描二维码

posted on   司徒正美  阅读(2919)  评论(0编辑  收藏  举报

点击右上角即可分享
微信分享提示