why are metaclasses created in ruby?

后端 未结 4 1889
醉酒成梦
醉酒成梦 2021-02-08 11:43

I m trying to understand the Ruby Object Model. I understood that the instance methods are saved in the class rather than in the objects of the class because it removes redundan

4条回答
  •  悲哀的现实
    2021-02-08 12:19

    As per The Ruby Programming Language the class methods, are infact singleton methods on an instance of the class that got same name as the class.

    Class Foo
      def self.bar
        "Am a class method"
      end
    end
    

    here method self.bar can be depicted as a singleton method on an instance Foo of type Class Foo.

    #the following code is just to explain on what actually are class methods called
    Foo.bar #=> "Am a class method" 
    #the call is done on an instance of class Foo which got ref name Foo
    

    We can go on adding more class/singleton/metaclass methods on Foo by

    class<"Am another class method"
    

    More formally singleton methods are defined as instance methods of an anonymous eigenclass/meta class.

    Though conceptually wrong we can assume classes are objects in this context, so as to have a better grasp.

    This concept is there to bring in true Object Oriented - ness in all levels of the language. Objective-C implements class methods in a similar fashion.

    In Obj-C metaclasses bails out as classes which contain information about the classes it meta. And the principles of inheritance do apply for meta-classes as well, there super class is its classe's superclasse's metaclass and climbs up so until it reaches the base object, whoe's metaclass is the metaclass itself. More reading on this can be done here.

提交回复
热议问题