At 5:41 PM -0700 9/3/02, David Wheeler wrote:
>On Tuesday, September 3, 2002, at 05:08  PM, Dan Sugalski wrote:
>
>>We call that concept "multimethod dispatch". That's what you're asking for.
>
>Dan, can you explain what "multimethod dispatch" is?

Damian can explain it better than I can, but it's essentially when 
you dispatch based on sub or method signature. You're allowed to have 
multiple versions of a single sub as long as they differ in their 
parameter signature.

So you could have a

    sub xyzzy(Foo $a) {
        print "Foo!\n";
    }

as well as a:

    sub xyzzy(Bar $a) {
        print "Bar!\n";
    }

And at runtime when you call xyzzy, the system looks at your 
parameter to decide which to call. Inheritance trees are searched as 
well, so if you had a Baz, which ISA Bar, calling xyzzy with a Baz 
would print out "Bar!"

Things get... interesting with multiple inheritance, and multiple 
parameters, but the general solution to potential conflicts, where 
there are two or more equally "right" things is to either use a 
default or throw an exception.
-- 
                                         Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
[EMAIL PROTECTED]                         have teddy bears and even
                                       teddy bears get drunk

Reply via email to