A class that looks like (kind_of?) several classes

Is there a way to make a class that looks like several classes?
For example:

class IOArray < IO
    include Array # doesn't work because Array is not a Module
    # use IO methods calls to accomplish the Array methods
end

I don't need multiple inheritance. All I want is these
additional classes to appear in the ancestors list. In the
above example, IOArray could act like an IO or an Array. It
looks like evil.rb might have a solution, but is there a
non-evil way?

···

__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail

Eric Mahurin wrote:

Is there a way to make a class that looks like several classes?
For example:

class IOArray < IO
    include Array # doesn't work because Array is not a Module
    # use IO methods calls to accomplish the Array methods
end

I don't need multiple inheritance. All I want is these
additional classes to appear in the ancestors list. In the
above example, IOArray could act like an IO or an Array. It
looks like evil.rb might have a solution, but is there a
non-evil way?

class IOArray < IO
  def kind_of?(cl)
    Array == cl || super
  end
end

x=IOArray.allocate

=> #<IOArray:0x10184258>

x.kind_of? Array

=> true

But seriously, for what do you need that? I can't think of an application
where I would want to make something look like an Array without being one.
Maybe it's rather Enumerable that you want?

Kind regards

    robert