有人可以解释一下<< self to to?

Wad*_*ndy 9 ruby ruby-on-rails

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

class << self
  def func
     stuff
  end
end
Run Code Online (Sandbox Code Playgroud)

我已经尝试在网上搜索一下解释,但是<< ???从最有用的搜索引擎中删除了,所以它最终只是搜索类自我,这不是很有用.任何见解将不胜感激.

Jör*_*tag 12

在Ruby中,class << foo打开引用的对象的单例类foo.在Ruby中,每个对象都有一个与之关联的单例类,它只有一个实例.此单例类包含特定于对象的行为,即单例方法.

所以,class << self打开单身类self.当然,究竟self 什么,取决于你所处的环境.例如,在模块或类定义主体中,它是模块或类本身.

如果您正在使用单例类,则定义单例方法,实际上有一个快捷方式:def foo.bar.

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

class << (Util = Object.new)
  def do_something(n)
    # ...
  end
end

Util.do_something(n)
Run Code Online (Sandbox Code Playgroud)