Aaron wrote:
> Several questions come up.
>
> * If $.foo is "like" the Perl5 $self->{foo},
Except (as I'm sure you know) that Perl 6 class instantiations aren't
hashes, and their attributes aren't hash entries.
> how do I do the Perl5 $self->foo?
.foo()
> * Is "foo" in this context an auto-quoted key, or an
> actual entry in the namespace? I ask because I'm
> trying to find out how this interacts with Perl's
> (un)reserved words.
>
> print $.if 1; # comes to mind
This is:
print ${'.if'} 1; # syntax error
not:
print $. if 1;
> * Do you always have to use parens now for method invocation?
No.
> > class Demo {
> >
> > my $foo;
> >
> > method foo is lvalue {
> > return $foo;
> > }
> > }
>
> Hmmm... I'm trying really hard to get my head 'round this.
>
> So, a class is a scope which creates a new closure every time it's
> instantiated?
That's the effect, yes. Though probably not the implementation.
I prefer to think of it like this: a class is a template for the lexical
scope in which each object lives and moves and has its being.
> This is intriguing. Certainly it removes any question
> of unauthorized member access.
Yep! ;-)
> I'm quite curious to see what the initialization syntax will be like.
class Demo {
my $foo;
my $bar;
method INIT ( $fooval, $barval) {
$foo = $fooval;
$bar = $barval;
}
method foo is lvalue {
return $foo;
}
}
my $demo = Demo->new(bar=>'sheep', foo=>'fighter');
> Will there be a special initialization method, or will we have something
> like a BEGIN block inside the class?
The former. The name is TBA though, since it's probably too confusing
to have INIT blocks and INIT initializers with no real relationship
between them.
> How would this play with constants?
class Demo {
my $threshold is const = 100;
...
}
> Seriously, it would be nice to have a BNF somewhere, even if it changed
> every day, and had a few "alternates" sections... I'd be interested
> in starting this if no one else has their heart set on doing it. Perhaps
> I could get it into a CVS archive so that we can all edit it on our
> own branches.
>
> I'm not proposing anything super-useful for actually cranking out
> Perl6's perly.y, but just a high-level view of the operators and
> essential syntax.
I'm planning to write a Perl6::Classes module as a proof-of-concept to
accompany my proposal.
Damian