[Ruby] Include vs Extend
首先,我們先宣告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
- http://stackoverflow.com/questions/15097929/ruby-module-require-and-include
- http://www.railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/
留言