代码之家  ›  专栏  ›  技术社区  ›  Wade Tandy

有人能给我解释一下班级吗?

  •  9
  • Wade Tandy  · 技术社区  · 15 年前

    我第一次进入rails编程,在查看我下载的一些库的代码时,我偶尔会注意到代码:

    class << self
      def func
         stuff
      end
    end
    

    我试过在网络上搜索一个解释,但是<<从大多数有用的搜索引擎中被删除,所以它最终只搜索类self,这不是很有用。任何洞察都将不胜感激。

    2 回复  |  直到 15 年前
        1
  •  12
  •   Jörg W Mittag    15 年前

    在鲁比, class << foo 单例类 引用的对象的 foo . 在Ruby中,每个对象都有一个与之关联的singleton类,这个类只有一个实例。这个单例类保存对象特定的行为,即单例方法。

    class << self 打开了 self 自己 ,当然,这取决于您所处的上下文。例如,在模块或类定义体中,它是模块或类本身。

    def foo.bar .

    下面是一个如何使用单例方法来提供一些与特定实例没有任何关联的“过程”的示例:

    class << (Util = Object.new)
      def do_something(n)
        # ...
      end
    end
    
    Util.do_something(n)
    
        2
  •  3
  •   Alex Wayne    15 年前

    相当于

    def self.func
      stuff
    end
    

    但嵌套在其中的所有方法都是类方法。它允许您声明许多方法是类方法,而不必标记每个方法 self

    推荐文章