ruby 中 include 与 extend 区别

那么include和extend究竟有什么区别的?

引用如下

include : mixes in specified module methods as instance methods in the target class
extend : mixes in specified module methods as class methods in the target class

记得有看过的,被用到的时候居然忘记了。杯具啊!

module A
    def klass_method
        puts 'klass method'
    end

    def ins_method
        puts 'instance method'
    end

end

class B
end

B.class_eval do
    include A
end

B.new.ins_method # 'should puts instance method'
#B.klass_method # 'not define'

B.class_eval do
    extend A
end

B.klass_method # 'klass method'
B.ins_method # also as class method