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 建立它們。