Ruby [新手] 如何理解下面那这段代码 (关于<<self)

kgra · 2014年03月23日 · 最后由 besfan 回复于 2014年03月23日 · 1992 次阅读
Module MTest
  class  <<  self 

    def xxx
    end

  end
end

上面的代码中 class << self 这句是定义了一个 MTest 类吗?与模块名称相同?

进入了当前 类/模块 的 metaclass, 又叫元类,单例类或者是鬼类. 上讲的很清楚

里面的方法是类方法,和 def self.xxx 功能一样

#1 楼 @neverlandxy_naix 同样是你,谢谢啦

class Point

    def self.fun1
         "Class method"
    end

    class << self
        def fun2
            "Class method"
        end
    end
end

class << Point
    def fun3
        "Class method"
    end
end

fun1,fun2,fun3 是一样的,都是类方法

#4 楼 @besfan 亲,重点是下面这个

Module MTest
  class  <<  self

是 Module 哦

module 和类比较接近,不同的地方是不能被实例化,也不能被子类化

需要 登录 后方可回复, 如果你还没有账号请 注册新账号