diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-05 20:35:30 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-05 20:35:30 +0000 |
commit | ac67a2b6d45d2ab443517110674d240bd1ee8ed6 (patch) | |
tree | 8e94e522be702ebca7e4c150abb51263990b0c41 /doc | |
parent | 902a36c1f6157385fc8cd914f3c8824017efbfeb (diff) |
* doc/syntax/modules_and_classes.rdoc: Added singleton classes
documentation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38710 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'doc')
-rw-r--r-- | doc/syntax/modules_and_classes.rdoc | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/doc/syntax/modules_and_classes.rdoc b/doc/syntax/modules_and_classes.rdoc index cca9dc2563..65bd31bf7d 100644 --- a/doc/syntax/modules_and_classes.rdoc +++ b/doc/syntax/modules_and_classes.rdoc @@ -291,3 +291,48 @@ provide them manually like <code>super(2)</code>. +super+ may be called as many times as you like in the subclass method. += Singleton Classes + +The singleton class (also known as the metaclass or eigenclass) of an object is +a class that holds methods for only that instance. You can access the +singleton class of an object using <code>class << object</code> like this: + + class C + end + + class << C + # self is the singleton class here + end + +Most frequently you'll see the singleton class accessed like this: + + class C + class << self + # ... + end + end + +This allows definition of methods and attributes on a class (or module) without +needing to write <code>def self.my_method</code>. + +Since you can open the singleton class of any object this means that this code +block: + + o = Object.new + + def o.my_method + 1 + 1 + end + +is equivalent to this code block: + + o = Object.new + + class << o + def my_method + 1 + 1 + end + end + +Both objects with have a +my_method+ that returns +2+. + |