Class::Meta::Types::Boolean(3) Boolean data types


package MyApp::Thingy;
use strict;
use Class::Meta;
use Class::Meta::Types::Boolean;
# OR...
# use Class::Meta::Types::Boolean 'affordance';
# OR...
# use Class::Meta::Types::Boolean 'semi-affordance';
# Create a Class::Meta object for this class.
my $cm = Class::Meta->new( key => 'thingy' );
# Add a boolean attribute.
$cm->add_attribute( name => 'alive',
type => 'boolean' );


This module provides a boolean data type for use with Class::Meta attributes. Simply load it, then pass ``boolean'' (or the alias ``bool'') to the "add_attribute()" method of a Class::Meta object to create an attribute of the boolean data type. See Class::Meta::Type for more information on using and creating data types.


Although the boolean data type has both ``default'' and ``affordance'' accessor options available, unlike the other data types that ship with Class::Meta, they have different implementations. The reason for this is to ensure that the value of a boolean attribute is always 0 or 1.

For the ``default'' accessor style, there is no difference in the interface from the default accessors for other data types. The default accessor merely checks the truth of the new value, and assigns 1 if it's a true value, and 0 if it's a false value. The result is an efficient accessor that maintains the consistency of the data.

For the ``affordance'' accessor style, however, the boolean data type varies in the accessors it creates. For example, for a boolean attributed named ``alive'', instead of creating the "get_alive" and "set_alive" accessors common to other affordance-style accessors, it instead creates three:


The result is highly efficient accessors that ensure the integrity of the data without the overhead of validation checks.


This module is stored in an open GitHub repository <>. Feel free to fork and contribute!

Please file bug reports via GitHub Issues <> or by sending mail to [email protected] <mailto:[email protected]>.


David E. Wheeler <[email protected]>


Copyright (c) 2002-2011, David E. Wheeler. Some Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.