有人可以向我解释一下“自我”吗?
我第一次跳进rails编程,在查看我下载的一些库的代码时,我偶尔会注意到代码:
class << self def func stuff end end
我已经尝试在网上搜索一下解释,但是“从最有用的搜索引擎中删除了”,所以它最终只是搜索类自我,这不是很有用。 任何见解将不胜感激。
在Ruby中, class << foo
打开了foo
引用的对象的单例类 。 在Ruby中,每个对象都有一个与之关联的单例类,它只有一个实例。 此单例类包含特定于对象的行为,即单例方法。
所以, class << self
打开了class << self
的单身阶级。 当然,究竟是什么,取决于你所处的背景。 例如,在模块或类定义主体中,它是模块或类本身。
如果您正在使用单例类,则定义单例方法,实际上有一个快捷方式: def foo.bar
。
下面是一个如何使用单例方法提供一些与特定实例没有任何关联的“过程”的示例:
class << (Util = Object.new) def do_something(n) # ... end end Util.do_something(n)
它相当于
def self.func stuff end
除了嵌套在其中的所有方法都是类方法。 它允许你声明一些方法是类方法,而不是在每个方法上self
判断。