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
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.