First page Back Continue Last page Overview Text


I haven't mentioned modules yet, but modules are actually not used directly in the super chain. Instead, when you include a module in a class or extend an object with a module, ruby creates an iclass object.

I believe iclass stands for internal class, and it is also stored in an Rclass struct. It's klass pointer points to the module, and it's super pointer points to the ancestor in the method chain.

This is how ruby allows a module to be included in multiple separate classes while only needing a single super pointer in the class object.