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

FreeBSD Manual Pages

  
 
  

home | help
MooseX::MultiMethods(3User Contributed Perl DocumentatiMooseX::MultiMethods(3)

NAME
       MooseX::MultiMethods - Multi Method Dispatch based on Moose type
       constraints

VERSION
       version 0.10

SYNOPSIS
	   package Paper;    use Moose;
	   package Scissors; use Moose;
	   package Rock;     use Moose;
	   package Lizard;   use Moose;
	   package Spock;    use Moose;

	   package Game;
	   use Moose;
	   use MooseX::MultiMethods;

	   multi method	play (Paper    $x, Rock	    $y)	{ 1 }
	   multi method	play (Paper    $x, Spock    $y)	{ 1 }
	   multi method	play (Scissors $x, Paper    $y)	{ 1 }
	   multi method	play (Scissors $x, Lizard   $y)	{ 1 }
	   multi method	play (Rock     $x, Scissors $y)	{ 1 }
	   multi method	play (Rock     $x, Lizard   $y)	{ 1 }
	   multi method	play (Lizard   $x, Paper    $y)	{ 1 }
	   multi method	play (Lizard   $x, Spock    $y)	{ 1 }
	   multi method	play (Spock    $x, Rock	    $y)	{ 1 }
	   multi method	play (Spock    $x, Scissors $y)	{ 1 }
	   multi method	play (Any      $x, Any	    $y)	{ 0 }

	   my $game = Game->new;
	   $game->play(Paper->new, Rock->new);	   # 1,	Paper covers Rock
	   $game->play(Spock->new, Paper->new);	   # 0,	Paper disproves	Spock
	   $game->play(Spock->new, Scissors->new); # 1,	Spock smashes Scissors

DESCRIPTION
       This module provides multi method dispatch based	on Moose type
       constraints. It does so by providing a "multi" keyword that extends the
       "method"	keyword	provided by MooseX::Method::Signatures.

       When invoking a method declared as "multi" a matching variant is	being
       searched	in all the declared multi variants based on the	passed
       parameters and the declared type	constraints. If	a variant has been
       found, it will be invoked.  If no variant could be found, an exception
       will be thrown.

AUTHOR
	 Florian Ragwitz <rafl@debian.org>

COPYRIGHT AND LICENSE
       This software is	copyright (c) 2010 by Florian Ragwitz.

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

perl v5.24.1			  2010-01-03	       MooseX::MultiMethods(3)

NAME | VERSION | SYNOPSIS | DESCRIPTION | AUTHOR | COPYRIGHT AND LICENSE

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

home | help