SYNOPSIS

  package MyObject;
  use Class::MakeMethods::Basic::Hash (
    'new'     => [ 'new' ],
    'scalar'  => [ 'foo', 'bar' ]
  );

  package main;

  my $obj = MyObject->new( foo => "Foozle", bar => "Bozzle" );
  print $obj->foo();
  $obj->bar("Barbados");

DESCRIPTION

This document describes the various subclasses of Class::MakeMethods included under the Basic::* namespace, and the method types each one provides.

The Basic subclasses provide stripped-down method-generation implementations.

Subroutines are generated as closures bound to each method name.

Calling Conventions

When you \*(C`use\*(C' a subclass of this package, the method declarations you provide as arguments cause subroutines to be generated and installed in your module. You can also omit the arguments to \*(C`use\*(C' and instead make methods at runtime by passing the declarations to a subsequent call to \*(C`make()\*(C'.

You may include any number of declarations in each call to \*(C`use\*(C' or \*(C`make()\*(C'. If methods with the same name already exist, earlier calls to \*(C`use\*(C' or \*(C`make()\*(C' win over later ones, but within each call, later declarations superceed earlier ones.

You can install methods in a different package by passing \*(C`-TargetClass => package\*(C' as your first arguments to \*(C`use\*(C' or \*(C`make\*(C'.

See \*(L"\s-1USAGE\s0\*(R" in Class::MakeMethods for more details.

Declaration Syntax

The following types of declarations are supported:

  • generator_type => 'method_name'

  • generator_type => 'name_1 name_2...'

  • generator_type => [ 'name_1', 'name_2', ...]

For a list of the supported values of generator_type, see \*(L"\s-1BASIC\s0 \s-1CLASSES\s0\*(R" in Class::MakeMethods::Docs::Catalog, or the documentation for each subclass.

For each method name you provide, a subroutine of the indicated type will be generated and installed under that name in your module.

Method names should start with a letter, followed by zero or more letters, numbers, or underscores.

RELATED TO Class::MakeMethods::Basic…

See Class::MakeMethods for general information about this distribution.

For distribution, installation, support, copyright and license information, see Class::MakeMethods::Docs::ReadMe.