in reply to Simple question about Inside-Out objects
In a inside-out implementation, you need to a way to identify the object that you are working with. The only difference between different objects of the same class are their addresses. by using refaddr we can uniquely identify our objects and hidden the variables in each object from each other.
A very short example
package Foo::Bar; use Scalar::Util qw(refaddr); my %var; sub get_var { my $self = shift; return $var{ refaddr( $self ) }; } sub set_var { my $self = shift; my $value = shift; $var{ refaddr( $self ) } = $value; return 1; } # Not completely sure that this is correct. sub new { my $class = shift; return bless \my($anon_scalar), $class; }
Take a look at Class::Std or Damian Conway's Best Practices on the concept.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Simple question about Inside-Out objects
by xdg (Monsignor) on Mar 13, 2007 at 19:25 UTC | |
by Herkum (Parson) on Mar 13, 2007 at 20:20 UTC | |
by xdg (Monsignor) on Mar 13, 2007 at 22:11 UTC | |
by Anonymous Monk on Mar 13, 2007 at 22:54 UTC | |
by Herkum (Parson) on Mar 14, 2007 at 00:53 UTC |