Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^2: $foo->bar = 14;

by adrianh (Chancellor)
on Dec 30, 2002 at 09:31 UTC ( #223006=note: print w/ replies, xml ) Need Help??


in reply to Re: $foo->bar = 14;
in thread $foo->bar = 14;

One problem with the approach you set forth is that it doesn't survive subclassing.

Eh?

use strict; use warnings; { package Foo; sub new { bless {}, shift }; BEGIN { no strict 'refs'; for my $property (qw/foo bar/) { *$property = sub : lvalue { $_[0]->{$property} }; } } } { package Bar; use base qw(Foo); BEGIN { no strict 'refs'; for my $property (qw/fribble ni/) { *$property = sub : lvalue { $_[0]->{$property} }; } } }; my $o = Bar->new; $o->foo=1; $o->bar=2; $o->fribble=3; $o->ni=4; print join(', ', $o->foo, $o->bar, $o->fribble, $o->ni), "\n"; # produces # 1, 2, 3, 4

or am I missing something?


Comment on Re^2: $foo->bar = 14;
Download Code
Re: Re^2: $foo->bar = 14;
by dws (Chancellor) on Dec 30, 2002 at 18:52 UTC
    or am I missing something?

    No, I missed something. I was reacting based on past misadventures with something very similar, without having read your code carefully enough. What you've written will indeed survive subclassing, though debugging through those generated methods is still going to be a problem. Mea culpa.

      I'm not the author of the code :-)

      Personally I very rarely generate accessors - not because I dislike generating them, but because I so rarely have a situation where bare-access to the object attributes is appropriate.

      Since many perl coders seem to spend a lot of time worrying about generating accessors I guess I must be weird!

      That said, the times I have generated accessors I've not come across debugging issues. I'm curious what problems you've encountered - can you illustrate?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://223006]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (11)
As of 2014-07-29 11:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (216 votes), past polls