package Equation_Problem;
use Moose;
use MooseX::Invertible_Build;
has 'a' => ( isa => Num);
has 'b' => ( isa => Num);
has 'c' => (
isa => Num,
invertible_build => {
#declare which attrs are part of
#our invertible builder group
#and the invertible function to base
#their builders off of
A => 'a',
B => 'b',
via => 'sum(A, B)',
},
);
package main;
$math_problem = new Equation_Problem( a => 4, b => 5);
print $math_problem->c # prints 9
$math_problem = new Equation_Problem(c => 7, b => 4);
print $math_problem->a #prints 3
####
default => sub{$_[0]->a + $_[0]->b}
##
##
default => sub{$_[0]->c - $_[0]->b}
##
##
has 'full_name' => (
isa => 'full_name',
coerce => 1,
lazy => 1,
invertible_build => (
A => 'first_name',
B => 'last_name',
via => 'join(' ', A, B)',
},
);