Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Sub::Multi(3)	      User Contributed Perl Documentation	 Sub::Multi(3)

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>

perl v5.32.1			  2007-03-20			 Sub::Multi(3)

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO | AUTHORS | COPYRIGHT

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=Sub::Multi&sektion=3&manpath=FreeBSD+13.1-RELEASE+and+Ports>

home | help