MOO-cows Mailing List Archive

[Prev][Next][Index][Thread]

Re: [MC] Multiple Inhertiance



--- Matt Pauker wrote:
>For add_parent, why would it be moved to the end if it is already there?
>You didn't really specify how order plays into the scheme.

Ok.  If object foo has parents {A, B, C}, A will be checked first, then B then
C.

>If by 'done manually', you mean done by directly calling the builtin, then
>I'd have to disagree.  The LambdaCore (And others, I'd bet) is set up such
>that the typical programmer rarely has to call builtins.  Verbs are
>provided to do most of this work.

I mean really major changes like reordering the parents parents of $room or 
$player.

>*  delete_parent will even delete the first parent, leaving an object with no
>   parents.  This will be the same as the current "chparent(foo, #-1)"

>First, delete_parent should be able to delete *any* parent, not just the 
>first one.

It can.  Just call delete_parent(parent) and parent will disappear from 
.parents.  The point was ALL parents can be deleted, not just down to one.

>Second, why would deleting the first parent leave an object with no parents?

Well, if it only had one parent at the time. . . 

>Couldn't there be other parents left?

Yes.

>What if you find more than one object with a matching verb?  You didn't
>handle this (common) instance.

Since only one object at a time is considered, there will be no ambiguity
that isn't in the server right now.

>You'd also have to update .ranked_parents on a recycle() or a renumber().
>And don't forget that you'd have to recurse down the list of children and
>do it for each of them.

True.

>Please don't think I'm trying to attack your idea and plan specifically; I
>just believe that multiple inheritance is something better left out of MOO.

I think it would be very cool to have.  Consider a MOO with, instead of huge
objects, a whole pile of feather-weight objects.  To make an object do what
you want it to, just add_parent the appropriate objects.  So, if you wanted
a locked combination safe, make it a child of "the generic box", "the 
generic lock", and "the generic combination checker" and put a few token 
verbs to attach the .locked status to whether or not the box can be opened, 
and the combination checker to the :unlock verb, inherited from the lock.

-manta  



Home | Subject Index | Thread Index