[Wellington-pm] Referencing arrays in an object
Grant McLean
grant at mclean.net.nz
Sun May 28 00:35:46 PDT 2006
On Sun, 2006-05-28 at 17:39 +1200, Cliff Pratt wrote:
> One of the methods is called 'grid' initialised so:
>
> $self->grid([]) ;
>
> I can access the elements of the array referred to by $self->grid by the
> following:
>
> $xxxx = $self->grid->[$i] ; # Within a method of the class
>
> I'm not using any accessor method here, am I?
Yes, you are. $self->grid is calling the 'grid' accessor which is
returning an array reference. You are then indexing into the referenced
array by appending ->[$i]
If you wanted to foreach through all the elements in the array you could
do it like this:
foreach my $cell ( @{ $self->grid } ) {
# do something with $cell
}
> I theenk that the accessor
> method will be something like the following:
>
> $xxxx = $self->grid([$i]) ; # Will this work?
No, in this case you're calling the grid method and passing it a
reference to a newly created array with one element, which contains the
current value of $i. From what you said earlier, the effect will be
overwriting the whole 'grid' array.
You could conceivably write your own accessor method that took the grid
index as an argument:
$self->grid_cell($i)
It's hard to say whether that would offer any advantage in your case.
Regards
Grant
More information about the Wellington-pm
mailing list