[libclass-tiny-perl] 09/11: Document using BUILD for required attribute checks
gregor herrmann
gregoa at debian.org
Sun May 31 14:03:53 UTC 2015
This is an automated email from the git hooks/post-receive script.
gregoa pushed a commit to annotated tag release-1.000
in repository libclass-tiny-perl.
commit 1a3417d88c7b448003b95123bda6319efb645fd1
Author: David Golden <dagolden at cpan.org>
Date: Tue Jul 15 20:35:50 2014 -0400
Document using BUILD for required attribute checks
Fixes #14
---
lib/Class/Tiny.pm | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/lib/Class/Tiny.pm b/lib/Class/Tiny.pm
index 6e99e2a..c45a481 100644
--- a/lib/Class/Tiny.pm
+++ b/lib/Class/Tiny.pm
@@ -337,13 +337,19 @@ by the constructor from the furthest parent class down to the child class after
the object has been created.
It is passed the constructor arguments as a hash reference. The return value
-is ignored. Use C<BUILD> for validation or setting default values that
-depend on other attributes.
+is ignored. Use C<BUILD> for validation, checking required attributes or
+setting default values that depend on other attributes.
sub BUILD {
my ($self, $args) = @_;
- $self->msg( "Hello " . $self->name );
+
+ for my $req ( qw/name age/ ) {
+ croak "$req attribute required" unless defined $self->$req;
+ }
+
croak "Age must be non-negative" if $self->age < 0;
+
+ $self->msg( "Hello " . $self->name );
}
The argument reference is a copy, so deleting elements won't affect data in the
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libclass-tiny-perl.git
More information about the Pkg-perl-cvs-commits
mailing list