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 创建它们。