From: Wesley Silva Date: 2008-06-01T06:35:11+09:00 Subject: Class Module Hi, I'm still learning ruby and i'm trying, but I just can't understand this result... class Module @@docs = {} # Invoked during class definitions def doc(str) @@docs[self.name] = self.name + ":\n" + str.gsub(/^\s+/, '') end # invoked to get documentation def Module::doc(aClass) # If we're passed a class or module, convert to string # ('<=' for classes checks for same class or subtype) aClass = aClass.name if aClass.class <= Module @@docs[aClass] || "No documentation for #{aClass}" end end class Example doc("This is a sample documentation string") # .. rest of class end puts Module::doc(Example) Produces: Example: This is a sample documentation string But class Module @@docs = {} # Invoked during class definitions def doc(str) @@docs[self.name] = self.name + ":\n" + str.gsub(/^\s+/, '') end # invoked to get documentation def Module::doc(aClass) # If we're passed a class or module, convert to string # ('<=' for classes checks for same class or subtype) aClass = aClass.name if aClass.class <= Module @@docs[aClass] || "No documentation for #{aClass}" end end class Example