Chris Prather wrote:
On Tue, Aug 18, 2009 at 12:07 PM, Yuri Shtil<[email protected]> wrote:
Hi,

Is there a way to change access to a lazy attribute to read-only once the
value has been set in the builder?

This question doesn't exactly make sense. Builder / Default have
nothing to do with the access of the attribute:

package Example;
use Moose;

has name => ( is => 'ro', lazy => 1, builder => '_build_foo' );
sub _build_foo { __PACKAGE__ }

say Example->new->name; # prints __PACKAGE__ from _build_foo
say Example->new->name('bar') # this will blow up even though
_build_foo was never called

my $ex = Example->new;

say $ex->name; # prints __PACKAGE__
$ex->name('bar') # blows up

Is this the behavior you want? This works by default.

-Chris
Actually I realized I made a mistake in my question.
I want to be able to make an attribute read only after changing it in certain places of my code. The reason is that I want to control access similar to private in C++;

--

Yuri

Reply via email to