Object::Pad::FieldAttr::Isa - apply class type constraints to Object::Pad fields
Object::Pad::FieldAttr::Isa
Object::Pad
use Object::Pad; use Object::Pad::FieldAttr::Isa; class ListNode { field $next :param :reader :writer :Isa(ListNode) = undef; } my $first = ListNode->new(); my $second = ListNode->new(next => $first); # This will fail my $third = ListNode->new(next => "something else"); # This will fail $second->set_next("another thing");
This module provides a third-party field attribute for Object::Pad-based classes, which declares that values assigned to the field must conform to a given object type.
WARNING The ability for Object::Pad to take third-party field attributes is still new and highly experimental, and subject to much API change in future. As a result, this module should be considered equally experimental.
field $name :Isa(CLASSNAME) ...;
Declares that any value assigned to the field must be an object reference, and must be derived from the named class. Attempts to assign a non-conforming value, such as a non-reference, or reference to a class not derived from that named, will throw an exception, and the field value will not be modified.
This type constraint is applied whenever the field itself is assigned to, whether that is from :param initialisation, invoking a :writer or :mutator accessor, or direct assignment into the field variable by method code within the class.
:param
:writer
:mutator
Paul Evans <leonerd@leonerd.org.uk>
To install Object::Pad::FieldAttr::Isa, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Object::Pad::FieldAttr::Isa
CPAN shell
perl -MCPAN -e shell install Object::Pad::FieldAttr::Isa
For more information on module installation, please visit the detailed CPAN module installation guide.