Ruby的双冒号与模块内继承

浏览:2575 发布日期:2016-10-13 14:39:02

首先在常量前加双冒号的意思是根命名空间下的类或模块:

:A

例如你有如下代码:

class A
    def show
    puts "我来裸A"
    endenda = ::A.new
a.show #=> puts "我来裸A"Module Mb
    class A < ::A
    def show
        puts "我来自Mb::A" 
    end  
    end

   class B < A
      def show2
       show()   
      end
  endend

          b = Mb::B.new
          b.show2 #=> puts "我来自Mb::A"

即在一个模块内,当我们使用一个常量,它优先在当前模块范围内查找,就如上面的代码所见,当 B < A,这个A是Mb::A