From: Dave Rolsky Date: Thu, 12 Feb 2009 17:12:41 +0000 (+0000) Subject: Revised types snack (and perltidied its code) X-Git-Tag: 0.69~5 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=03e5ba80190ce1a3ab5e84ac95659e4872371c26;p=gitmo%2FMoose.git Revised types snack (and perltidied its code) --- diff --git a/lib/Moose/Cookbook/Snack/Types.pod b/lib/Moose/Cookbook/Snack/Types.pod index 0448e4f..f3d6180 100644 --- a/lib/Moose/Cookbook/Snack/Types.pod +++ b/lib/Moose/Cookbook/Snack/Types.pod @@ -9,43 +9,45 @@ Moose::Cookbook::Snack::Types - Snippets of code for using Types and Type Constr package Point; use Moose; - - has 'x' => (isa => 'Int', is => 'ro' ); - has 'y' => (isa => 'Int', is => 'rw' ); - + + has 'x' => ( isa => 'Int', is => 'ro' ); + has 'y' => ( isa => 'Int', is => 'rw' ); + package main; - my $point = eval { - Point->new(x => 'fifty', y => 'forty'); - }; + my $point = eval { Point->new( x => 'fifty', y => 'forty' ); }; - if($@) { - print "Oops: $@"; + if ($@) { + print "Oops: $@"; } my $point; - my $xval = 'forty-two'; - my $xattribute = Point->meta->find_attribute_by_name('x'); + my $xval = 'forty-two'; + my $xattribute = Point->meta->find_attribute_by_name('x'); my $xtype_constraint = $xattribute->type_constraint; - if($xtype_constraint->check($xval)) { - $point = Point->new(x => $xval, y => 0); - } else { - print "Value: $xval is not an " . $xtype_constraint->name . "\n"; - } + if ( $xtype_constraint->check($xval) ) { + $point = Point->new( x => $xval, y => 0 ); + } + else { + print "Value: $xval is not an " . $xtype_constraint->name . "\n"; + } =head1 DESCRIPTION -This is the Point example from (L) with added -type checking. +This is the Point example from L +with type checking added. + +If we try to assign a string value to an attribute that is an C, +Moose will die with an explicit error message. The error will include +the attribute name, as well as the type constraint name and the value +which failed the constraint check. -If we try to assign a string value to an attribute that is defined as -being of type Int, Moose will die with an explicit error message -saying which attribute failed which type constraint with which -value. The eval example catches this message and displays it. +We use C to catch this error message in C<$@>. -The second example fetches the type constraint instance and asks it to -check the value we are about to set, before we try and set it. +Later, we get the L object from a +L and use the L +to check a value directly. =head1 SEE ALSO