--- "Mumia W." <[EMAIL PROTECTED]>
wrote:

> On 09/22/2006 07:50 AM, chen li wrote:
> > 
> > --- "Mumia W."
> <[EMAIL PROTECTED]>
> > wrote:
> >> That "redundancy" allows you to use inheritance.
> If
> >> you have a class 
> >> Employee, with an expanded set of fields, this
> >> method makes it possible 
> >> to add the fields without having to modify each
> >> method that uses them.
> >>
> > 
> > Where can I find more about this kind of syntax?
> > [...]
> 
> Read the "Class Data" section in perltoot.
> 
Hi Mumia,

I don't think I get the point.  If my purpose of using
AUTOLOAD is to handle 1) many attributes in construct
2) create an un-predined method on the fly, what will
happen if I make the following changes:

in sub new change 
 my $self  = {_permitted => \%fields,%fields,};
 
to my $self =\%fields;


in  sub AUTOLOAD comment out the unless statement.

Do you think these change will affect inheritance?

Thanks in advacne,

Li


########### copy from perltoot
        package Person;
        use Carp;
        our $AUTOLOAD;  # it's a package global

        my %fields = (
            name        => undef,
            age         => undef,
            peers       => undef,
        );

        sub new {
            my $class = shift;
            my $self  = {
                _permitted => \%fields,
                %fields,
            };
            bless $self, $class;
            return $self;
        }


 sub AUTOLOAD {
            my $self = shift;
            my $type = ref($self)
                        or croak "$self is not an
object";

            my $name = $AUTOLOAD;
            $name =~ s/.*://;   # strip
fully-qualified portion

            unless (exists
$self->{_permitted}->{$name} ) {
                croak "Can't access `$name' field in
class $type";
            }

            if (@_) {
                return $self->{$name} = shift;
            } else {
                return $self->{$name};
            }
        }

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to