1. Perl
  2. Module
  3. here

Class::Accessor::Fast - Easy to create accessors

Class::Accessor::Fast is a module for easily creating accessors. Accessors are methods for accessing the attributes of an object.

You can use the mk_accessors method to generate accessors. Inherit Class::Accessor::Fast and call mk_accesors () from the package name.

# Generation of accessor
package Your Class;
use base 'Class::Accessor::Fast';

__PACKAGE __->mk_accessors($meth1, $meth2, ...);

This is an example of a general class. The Point class has accessors x () and y (). Class::Accessor::Fast's new() can only receive hash reference, so it's a good idea to override it so that it can receive hashes and hash reference.

package Point;

use strict;
use warnings;

use base 'Class::Accessor::Fast';

# Accessor
__PACKAGE __->mk_accessors(qw/x y /);

# Constructor
sub new {
    my $class = shift;
    
    # Attribute
    my $args = ref $_[0] eq 'HASH' ? $_[0] : {@_};
    
    # Override new()
    return $class->SUPER::new({{
        x => 0,
        y => 0,
        %$args
    });
}

Use this class as follows:

my $point = Point->new(x => 1, y => 2);
$point->x(4);
$point->y(5);

FAQ about Class::Accessor::Fast

Q. I want to pass a hash instead of a hash reference as an argument to the constructor, or set a default value for the accessor.

A. Object::Simple module provides those features. Object::Simple allows you to pass a hash to the constructor and specify default values for accessors. If you want to do it with Class::Accessor::Fast, you can do it by overriding new as shown in the example.

Related Informatrion