# "Parametric class" on inheritance

**URL:** <https://www.ruby-forum.com/t/parametric-class-on-inheritance/127062>\
**Category:** Ruby\
**Created:** [January 24, 2008, 5:23pm UTC](https://www.ruby-forum.com/t/parametric-class-on-inheritance/127062 "2008-01-24T17:23:36Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ronaldfischer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/67e7ee/32.png) [@ronaldfischer](https://www.ruby-forum.com/u/ronaldfischer)\
**Post date:** [January 24, 2008, 5:23pm UTC](https://www.ruby-forum.com/t/parametric-class-on-inheritance/127062/1 "2008-01-24T17:23:36Z")

</div>

I found in “Ruby Cookbook” (recipe 8.8) a syntactically  
interesting construct, which I would like to understand.  
Here is the excerpt from the coding example:

require ‘delegate’  
class OrdinalNumber \< DelegateClass(Fixnum)  
…  
end

I am a bit puzzled about the way the parent class is  
written: DelegateClass(Fixnum). This looks like a  
function call, only that DelegateClass is not a  
function (since it starts with an upper-case letter).  
How does it work out that DelegateClass(Fixnum) evaluates  
to something of type “Class”?

Ronald

---

<div class="post-metadata">

**Author:** ![ronaldfischer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/67e7ee/32.png) [@ronaldfischer](https://www.ruby-forum.com/u/ronaldfischer)\
**Post date:** [January 24, 2008, 5:30pm UTC](https://www.ruby-forum.com/t/parametric-class-on-inheritance/127062/2 "2008-01-24T17:30:22Z")

</div>

On Jan 24, 2008, at 10:23 AM, Ronald F. wrote:

> written: DelegateClass(Fixnum). This looks like a  
> function call, only that DelegateClass is not a  
> function (since it starts with an upper-case letter).  
> How does it work out that DelegateClass(Fixnum) evaluates  
> to something of type “Class”?

It is a method call actually. You are allowed to create method that  
begin with a capital letter, though it’s best only used for special  
cases like this. Usually a capitalized method does some kind of  
conversion, like what we see here or Kernel#Array, Kernel#String, etc.

James Edward G. II

---

<div class="post-metadata">

**Author:** ![ronaldfischer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/67e7ee/32.png) [@ronaldfischer](https://www.ruby-forum.com/u/ronaldfischer)\
**Post date:** [January 24, 2008, 5:32pm UTC](https://www.ruby-forum.com/t/parametric-class-on-inheritance/127062/3 "2008-01-24T17:32:43Z")

</div>

On Jan 24, 2008 11:23 AM, Ronald F. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> written: DelegateClass(Fixnum). This looks like a  
> function call, only that DelegateClass is not a  
> function (since it starts with an upper-case letter).  
> How does it work out that DelegateClass(Fixnum) evaluates  
> to something of type “Class”?

When in doubt check it out in irb:

> > require ‘delegate’  
> > =\> true  
> > DelegateClass(Fixnum)  
> > =\> #Class:0x35dd9c

So DelegateClass is indeed a function that returns a class and the \<  
syntax does allow expressions on the right hand side.

Brian.

---

<div class="post-metadata">

**Author:** ![ronaldfischer](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/67e7ee/32.png) [@ronaldfischer](https://www.ruby-forum.com/u/ronaldfischer)\
**Post date:** [January 25, 2008, 8:54am UTC](https://www.ruby-forum.com/t/parametric-class-on-inheritance/127062/4 "2008-01-25T08:54:24Z")

</div>

James G. wrote:

> On Jan 24, 2008, at 10:23 AM, Ronald F. wrote:
> 
> > How does it work out that DelegateClass(Fixnum) evaluates  
> > to something of type “Class”?
> 
> It is a method call actually. You are allowed to create method that  
> begin with a capital letter, though it’s best only used for special  
> cases like this. Usually a capitalized method does some kind of  
> conversion, like what we see here or Kernel#Array, Kernel#String, etc.

Thanks a lot (also to Brian) for the helpful explanation!

Ronald
