Venus::Role::Matchable - Matchable Role


Matchable Role for Perl 5


  package Example;

  use Venus::Class;

  with 'Venus::Role::Matchable';

  attr 'active';

  sub validate {
    my ($self) = @_;

    return $self->match->when('active')->then(true)->none(false);

  package main;

  my $example = Example->new;

  # $example->validate->result;

  # 0


This package modifies the consuming package and provides a mechanism for assembling complex pattern matching operations.


This package provides the following methods:


  match(Str | CodeRef $method, Any @args) (Match)

The match method returns a Venus::Match object having the match value set to the invocant or the result of a dispatch. This method supports dispatching, i.e. providing a method name and arguments whose return value will be acted on by this method.

Since 0.04

match example 1
  package main;

  my $example = Example->new;

  my $match = $example->match;

  # bless({..., value => bless(..., 'Example')}, 'Venus::Match')
match example 2
  package main;

  my $example = Example->new;

  my $match = $example->match('active');

  # bless({..., value => undef}, 'Venus::Match')
match example 3
  package main;

  my $example = Example->new(active => 1);

  my $match = $example->match('active');

  # bless({..., value => 1}, 'Venus::Match')