|
NAMEClass::MakeMethods::Standard::Array - Methods for Array objectsSYNOPSISpackage MyObject; use Class::MakeMethods::Standard::Array ( new => 'new', scalar => [ 'foo', 'bar' ], array => 'my_list', hash => 'my_index', ); ... my $obj = MyObject->new( foo => 'Foozle' ); print $obj->foo(); $obj->bar('Barbados'); print $obj->bar(); $obj->my_list(0 => 'Foozle', 1 => 'Bang!'); print $obj->my_list(1); $obj->my_index('broccoli' => 'Blah!', 'foo' => 'Fiddle'); print $obj->my_index('foo'); DESCRIPTIONThe Standard::Array suclass of MakeMethods provides a basic constructor and accessors for blessed-array object instances.Calling ConventionsWhen you "use" this package, the method names you provide as arguments cause subroutines to be generated and installed in your module.See "Calling Conventions" in Class::MakeMethods::Standard for more information. Declaration SyntaxTo declare methods, pass in pairs of a method-type name followed by one or more method names.Valid method-type names for this package are listed in "METHOD GENERATOR TYPES". See "Declaration Syntax" in Class::MakeMethods::Standard and "Parameter Syntax" in Class::MakeMethods::Standard for more information. Positional Accessors and %FIELDSEach accessor method is assigned the next available array index at which to store its value.The mapping between method names and array positions is stored in a hash named %FIELDS in the declaring package. When a package declares its first positional accessor, its %FIELDS are initialized by searching its inheritance tree. Warning: Subclassing packages that use positional accessors is somewhat fragile, since you may end up with two distinct methods assigned to the same position. Specific cases to avoid are:
METHOD GENERATOR TYPESnew - ConstructorFor each method name passed, returns a subroutine with the following characteristics:
Sample declaration and usage: package MyObject; use Class::MakeMethods::Standard::Array ( new => 'new', ); ... # Bare constructor my $empty = MyObject->new(); # Constructor with initial sequence of method calls my $obj = MyObject->new( foo => 'Foozle', bar => 'Barbados' ); # Copy with overriding sequence of method calls my $copy = $obj->new( bar => 'Bob' ); scalar - Instance AccessorFor each method name passed, uses a closure to generate a subroutine with the following characteristics:
Sample declaration and usage: package MyObject; use Class::MakeMethods::Standard::Array ( scalar => 'foo', ); ... # Store value $obj->foo('Foozle'); # Retrieve value print $obj->foo; array - Instance Ref AccessorFor each method name passed, uses a closure to generate a subroutine with the following characteristics:
Sample declaration and usage: package MyObject; use Class::MakeMethods::Standard::Array ( array => 'bar', ); ... # Clear and set contents of list print $obj->bar([ 'Spume', 'Frost' ] ); # Set values by position $obj->bar(0 => 'Foozle', 1 => 'Bang!'); # Positions may be overwritten, and in any order $obj->bar(2 => 'And Mash', 1 => 'Blah!'); # Retrieve value by position print $obj->bar(1); # Direct access to referenced array print scalar @{ $obj->bar() }; There are also calling conventions for slice and splice operations: # Retrieve slice of values by position print join(', ', $obj->bar( undef, [0, 2] ) ); # Insert an item at position in the array $obj->bar([3], 'Potatoes' ); # Remove 1 item from position 3 in the array $obj->bar([3, 1], undef ); # Set a new value at position 2, and return the old value print $obj->bar([2, 1], 'Froth' ); hash - Instance Ref AccessorFor each method name passed, uses a closure to generate a subroutine with the following characteristics:
Sample declaration and usage: package MyObject; use Class::MakeMethods::Standard::Array ( hash => 'baz', ); ... # Set values by key $obj->baz('foo' => 'Foozle', 'bar' => 'Bang!'); # Values may be overwritten, and in any order $obj->baz('broccoli' => 'Blah!', 'foo' => 'Fiddle'); # Retrieve value by key print $obj->baz('foo'); # Retrive slice of values by position print join(', ', $obj->baz( ['foo', 'bar'] ) ); # Direct access to referenced hash print keys %{ $obj->baz() }; # Reset the hash contents to empty @{ $obj->baz() } = (); object - Instance Ref AccessorFor each method name passed, uses a closure to generate a subroutine with the following characteristics:
Sample declaration and usage: package MyObject; use Class::MakeMethods::Standard::Hash ( object => 'foo', ); ... # Store value $obj->foo( Foozle->new() ); # Retrieve value print $obj->foo; SEE ALSOSee Class::MakeMethods for general information about this distribution.See Class::MakeMethods::Standard for more about this family of subclasses. See Class::MakeMethods::Standard::Hash for equivalent functionality based on blessed hashes. If your module will be extensively subclassed, consider switching to Standard::Hash to avoid the subclassing concerns described above.
Visit the GSP FreeBSD Man Page Interface. |