Chia-liang Kao (高嘉良) > Sub-Multi > Sub::Multi

Download:
Sub-Multi-0.003.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.003   Source  

NAME ^

Sub::Multi - Data::Bind-based multi-sub dispatch

SYNOPSIS ^

 my $multi_sub = Sub::Multi->new($sub1, $sub2, $sub3);

Now dispatch to the right subroutine, based on @args.

 $multi_sub->(@args);

DESCRIPTION ^

Perl6 allows multiple subs and methods with the same name, differing only in their signature.

    multi sub bar (Dog $foo) {?}
    multi sub bar (Cat $foo) {?}

Dispatching will happen based on the runtime signature of the subroutine or method call.

new

 my $multi_sub = Sub::Multi->new($sub1, $sub2, $sub3);
 $multi_sub->(@args);

Build and return a code reference that will dispatch based on the Perl6 multi dispatch semantics.

TODO: Verify this statement: Before the method is actually dispatched, a call to Data::Bind->sub_signature should be made to register the subroutine signature.

add_multi

  my $multi_sub  =  Sub::Multi->add_multi($sub_name, \&sub );
  $multi_sub->(@args);

Associates $sub_name with \&sub, and returns code reference that will dispatch appropriately. add_multi can be called multiple times with the same $sub_name to build a multi-dispatch method.

TODO: Verify this statement: Before the method is actually dispatched, a call to Data::Bind->sub_signature should be made to register the subroutine signature.

SEE ALSO ^

Data::Bind

TODO: Add a good reference to Perl6 multiple dispatch here.

AUTHORS ^

Chia-liang Kao <clkao@clkao.org>

COPYRIGHT ^

Copyright 2006 by Chia-liang Kao and others.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See http://www.perl.com/perl/misc/Artistic.html

syntax highlighting: