Extending a Ruby module in another module, including the module methods

后端 未结 5 842
北海茫月
北海茫月 2020-12-02 23:12

Whenever I try to extend a ruby module, I lose the module methods. Neither include nor extend will do this. Consider the snippet:

module A 
  def self.say_         


        
5条回答
  •  猫巷女王i
    2020-12-02 23:20

    I don't like everyone using self.included. I have simpler solution:

    module A
      module ClassMethods
        def a
          'a1'
        end
      end
      def a
        'a2'
      end
    end
    
    module B
      include A
    
      module ClassMethods
        include A::ClassMethods
        def b
          'b1'
        end
      end
      def b
        'b2'
      end
    end
    
    class C
      include B
      extend B::ClassMethods
    end
    
    class D < C; end
    
    puts D.a
    puts D.b
    puts D.new.a
    puts D.new.b
    

提交回复
热议问题