I understand the concept of classes and subclasses thanks to the
excellent "Programming Ruby - The Pragmatic Programmer's Guide".
However, I don't understand what :: signify in terms of inheritance,
parent and child in e.g.
ActionController::Base
···
--
Posted via http://www.ruby-forum.com/.
Pål Bergström wrote:
I understand the concept of classes and subclasses thanks to the
excellent "Programming Ruby - The Pragmatic Programmer's Guide".
However, I don't understand what :: signify in terms of inheritance,
parent and child in e.g.
ActionController::Base
Btw, I'm told that I can find the answer in chapter 9, starting at page
117. But I read it on the web at
Programming Ruby: The Pragmatic Programmer's Guide, so I have no chapters.
···
--
Posted via http://www.ruby-forum.com/\.
I understand the concept of classes and subclasses thanks to the
excellent "Programming Ruby - The Pragmatic Programmer's Guide".
However, I don't understand what :: signify in terms of inheritance,
parent and child in e.g.
This seems to be a common source of confusion when learning Ruby
(myself included).
It is really pretty simple. Class and Module objects are referenced
via hierarchical names:
A
ActionController::Base
ActiveRecord::Base
Process::Sys
The confusion arises when you assume that the names imply class/subclass
relationships. The hierarchy of *names* is 100% independent of the
hierarchy of classes.
The scope operator (:
provides the syntax for constructing the
hierarchical class names but has no impact on the inheritance
structure of the classes:
class A
class A1; end
end
class B
class B1; end
end
class C < A; end
class D < A::A1; end
class E < B::B1; end
class B::B1::B2 < A::A1; end
class A::A1::A2 < B::B1::B2; end
From those definitions you get the following inheritance structure:
Object + -- A --------- C
>
+ -- A::A1 --+-- D
> >
> +-- B::B1::B2 -- A::A1::A2
>
+ -- B
>
+ -- B::B1 ----- E
The associated naming hierarchy is
top + -- A -- A1 -- A2
>
+ -- B -- B1 -- B2
>
+ -- C
>
+ -- D
>
+ -- E
Gary Wright
···
On Jul 14, 2006, at 9:13 AM, Pål Bergström wrote:
A::B
Hi Pål,
I'm a newbie too. I'll stick my neck out and answer here just so as to
"trick" an expert into answering. Once they see my miserable excuse for
an answer, they will be honor bound to correct me 
ActionController::Base refers to the "Base" class of the Module
ActionController. So you are not "inheriting" the whole module, just
the "Base" class of the module. Makes sense for a Class to inherit a
Class definition rather than a whole module's definition.
best,
jp
Pål Bergström wrote:
···
Pål Bergström wrote:
I understand the concept of classes and subclasses thanks to the
excellent "Programming Ruby - The Pragmatic Programmer's Guide".
However, I don't understand what :: signify in terms of inheritance,
parent and child in e.g.
ActionController::Base
Btw, I'm told that I can find the answer in chapter 9, starting at page
117. But I read it on the web at
Programming Ruby: The Pragmatic Programmer's Guide, so I have no chapters.
--
Posted via http://www.ruby-forum.com/\.
Everything but sentence was perfect. You can't inherit modules.
(Please avoid top posting in the future).
···
On Jul 14, 2006, at 11:54 AM, Jeff Pritchard wrote:
Hi Pål,
I'm a newbie too. I'll stick my neck out and answer here just so as to
"trick" an expert into answering. Once they see my miserable excuse for
an answer, they will be honor bound to correct me 
ActionController::Base refers to the "Base" class of the Module
ActionController. So you are not "inheriting" the whole module, just
the "Base" class of the module. Makes sense for a Class to inherit a
Class definition rather than a whole module's definition.
best,
jp
Jeff Pritchard wrote:
Hi Pål,
I'm a newbie too. I'll stick my neck out and answer here just so as to
"trick" an expert into answering. Once they see my miserable excuse for
an answer, they will be honor bound to correct me 
ActionController::Base refers to the "Base" class of the Module
ActionController. So you are not "inheriting" the whole module, just
the "Base" class of the module. Makes sense for a Class to inherit a
Class definition rather than a whole module's definition.
Thanks for the effort Jeff. A good trick 
···
--
Posted via http://www.ruby-forum.com/\.