Ruby 单例类介绍

Ruby 有三种类型的对象:

  • 类和模块,它们是类 Class 或类 Module 的实例。
  • 类的实例。
  • 单例类。

每个对象都有一个包含其方法的类:

class Example
end

object = Example.new

object.class  # => Example
Example.class # => Class
Class.class   # => Class

对象本身不能包含方法,只有它们的类才可以。但是使用单例类,可以向任何对象添加方法,包括其他单例类。

def object.foo
  :foo
end
object.foo #=> :foo

foo 是在 object 的单例类上定义的。其他 Example 实例无法回复 foo

Ruby 根据需要创建单例类。访问它们或向它们添加方法迫使 Ruby 创建它们。