Chinaunix

标题: [技巧]Include与Extend的比较 [打印本页]

作者: 2gua    时间: 2010-12-07 11:03
标题: [技巧]Include与Extend的比较
本帖最后由 2gua 于 2010-12-07 11:36 编辑

你可以用include或extend来MixIn(混入)module的方法到class。
它俩的不同在于:

    include使得module的方法被类实例使用;
    extend使得module的方法被类本身使用。

举例:

module Greetings
  def say_hello
    puts "Hello!"
  end
end

class Human
  include Greetings
end

Human.new.say_hello # => "Hello!"
Human.say_hello     # NoMethodError

class Robot
  extend Greetings
end

Robot.new.say_hello # NoMethodError
Robot.say_hello     # => "Hello!"

如果你想了解更多关于include和extend比较的信息,推荐你看看以下资源:







欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2