On Fri, Mar 12, 2004 at 03:47:57AM -0500, Austin Hastings wrote:
: > -----Original Message-----
: > From: Larry Wall [mailto:[EMAIL PROTECTED]
: > On Thu, Mar 11, 2004 at 11:38:11AM +0000, Andy Wardley wrote:
: > : Larry Wall wrote:
: > : >     multi sub *scramble (String $s) returns String {...}
: > : [...]
: > : > Or you can just call it directly as a function:
: > : >     scramble("hello")
: > : 
: > : Can you also call scramble as a class method?
: > : 
: > :   class String is extended {
: > :      method scramble { ..etc... }
: > :   }
: > : 
: > :   String.scramble("hello")
: > 
: > Not unless you write a class method that takes an extra argument.
: > Otherwise you're passing a class where it expects a string, and a
: > string where it expects nothing.  However, much like in Perl 5 you
: > can always force which class's method to call with
: > 
: >     "hello".String::scramble();
: 
: But it would work as a "class multi", right?
: 
:   class String is extended {
:     multi scramble(String $s) {...}
:   }

You probably have to decide whether that's a multi sub or a multi method,
at least syntactically.  Though it may not matter which you pick because...

:   "hello".scramble();
:   String::scramble("hello");   # Way overspecified for a multi...

For a single argument function, those probably come out to the same thing
in the end.  With more arguments you have to start distinguishing single
dispatch from multiple dispatch.

Larry

Reply via email to