少於 1 分鐘閱讀

首先,我們先宣告module Foo當範例

module Foo
  def foo
    puts 'Hello!'
  end
end

接下來看看Include Foo及Extend Foo的差異

Include

include提供實例方法(instance method)。

例如:

class Bar
  include Foo
end

Bar.new.foo # Hello!
Bar.foo # NoMethodError: undefined method ‘foo’ for Bar:Class

Extend

extend提供類方法(class method)。

例如:

class Baz
  extend Foo
end

Baz.foo # Hello!
Baz.new.foo # NoMethodError: undefined method ‘foo’ for #<Baz:0x1e708>

Reference

  1. http://stackoverflow.com/questions/15097929/ruby-module-require-and-include
  2. http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/

更新時間:

留言