in reply to Memoizing Methods
Using Memoize is certainly possible, but you'll need to jump through a couple of hoops - you must only memoize() the 'get' functionality, and need to be able to clear the cached value as part of 'set' - so it's probably easiest doing it the way you already are.
I've not used this myself, but I believe it should work something like this (untested):
use Memoize; my(%_getscalar, %_getlist); memoize(__PACKAGE__ . '::_get', SCALAR_CACHE => [ HASH => \%_getscalar ], LIST_CACHE => [ HASH => \%_getlist ], ); # in _set() sub _set { my($self, $element, $value) = @_; ... # default normaliser my $cachekey = join "\034", $self, $element; delete $_getscalar{$cachekey}; delete $_getlist{$cachekey}; ... }
Hugo
|
|---|