Xref: utzoo comp.lang.misc:7270 comp.object:3028 Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!swrinde!cs.utexas.edu!uunet!bony1!richieb From: richieb@bony1.bony.com (Richard Bielak) Newsgroups: comp.lang.misc,comp.object Subject: Re: CHALLENGE: heterogeneous collections Message-ID: <1991Apr3.211414.25628@bony1.bony.com> Date: 3 Apr 91 21:14:14 GMT References: <1991Mar25.220525.11087@leland.Stanford.EDU> <521@eiffel.UUCP> Reply-To: richieb@bony1.UUCP (Richard Bielak) Distribution: comp Organization: Bank of New York Lines: 54 In article cimshop!davidm@uunet.UU.NET (David S. Masterson) writes: [...] > >I really hate the idea of contradicting Bertrand Meyer as I'm probably getting >in over my head. Don't blame you! :-) [...] >On the other hand: > > h_collection: COLLECTION [void] /* or is it 'void*'? */ > >might be a *truly* heterogeneous collection (assuming objects entered into the >collection can be implicitly cast to VOID), but (going back to the original >question) how useful would it be since all clues as to type and protocol of >objects in the collection are removed? The generic collection should really be declared as: h_collection: COLLECTION [ANY]; as any class in Eiffel is an heir of ANY. The following trick can be used to do things with objects in such a collection. my_weird_object : MY_WEIRD_CLASS; .... my_weird_object ?= h_collection.next_item; -- above line gets the next item from the collection -- and does a "reverse" assigment to my variable. -- this assigment will only work, if the type on -- the right is of type MY_WEIRD_CLASS (or a descendant) -- otherwise, Void is returned. -- so, if not my_weird_object.Void then -- got a weird_object_here, do what you need to .... end; ...richie "What does a virtual void look like?" -- *-----------------------------------------------------------------------------* | Richie Bielak (212)-815-3072 | Programs are like baby squirrels. Once | | Internet: richieb@bony.com | you pick one up and handle it, you can't | | Bang: uunet!bony1!richieb | put it back. The mother won't feed it. |