Re: RFC 188 (v1) Objects : Private keys and methods
[email protected] (Kenneth Lee) Sat, 02 Sep 2000 14:37:29 +0800
| Newsgroups | perl.perl6.language.objects |
|---|---|
| Message-ID | <[email protected]> |
Kenneth Lee wrote:
>
> > Once a hash has been C<private>-ized, the only way to extend its set of
> > entries is via another call to C<private>:
> >
> > sub new {
> > my ($class, %self) = @_;
> > bless private \%self, $class;
> > private $self{seed} = rand; # okay
> > $self{seed} = rand; # dies, can't autovivify
> > }
> >
>
> can we eliminate the private keyword and perform this check on all
> blessed array/hash references? direct access to entries is prohibited
> outside of the bless()ed package:
>
> package MyAccount;
> @ISA = qw(BaseClass);
> sub new {
> my $class = shift;
> bless $class->SUPER::new(@_), $class;
er, should be $class->SUPER::new(@_) ...
> }
> sub creditBalance {
> self->{balance} += shift; # valid
> }
> sub debitBalance {
> self->{balance} -= shift; # valid
> }
>
> package main;
> $acc = MyAccount->new;
> $acc->{balance} *= 1000; # dies
>
> just IMHO,
> kenneth