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