package Simple; use Class::MethodMaker get_set => [ qw/ a b / ], new_with_init => 'new'; sub init { my ($class, %args) = @_; my %default = ( 'b' => 'default' ); %args = (%args, %default); bless \%args, $class; }
The difference here is that the arguments hash, %args, is blessed as an object rather than singularly creating each element as was being performed. Also too, this approach lends itself well to argument validation, for example with the addition of a single validation loop:
use Carp; %args = (%args, %default); foreach (keys %args) { carp( 'Unknown argument to init subroutine - ', $_ ) unless exists + $default{$_}; } bless \%args, $class;
This approach allows for the keys in the passed %args hash to be validated against the %default hash so that only allowed elements are included in the object.
In reply to Re: Create small simple OO program with get/set, defaults, initialization
by rob_au
in thread Create small simple OO program with get/set, defaults, initialization
by justanyone
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |