On Wed Mar 24 08:36:38 2010, masak wrote:
> <ash_> what would a state variable in a class definition be like?
> <masak> ash_: like this? class A { state $foo }
> <ash_> yeah
> 
> <masak> ash_: it wouldn't really make practical sense, because the
> class block is only run once.
> <masak> (AFAIK)
> <jnthn> What does a state variable gain over a lexical in a class
> body?
> <jnthn> Unless it's an anonymous class... :-)
> <jnthn> In a role it'd be really funky though. :-)
> <masak> hm :)
> <jnthn> role Foo[::T] { ... } # body may be run many times.
> <masak> rakudo: role A[::T] { state $foo; say ++$foo }; A[Int]; A[Str]
> <p6eval> rakudo db0f85: OUTPUT�Symbol '$foo' not predeclared in
> !class_init_12 [...]

This now says:

20:00 < [Coke]> rakudo: role A[::T] { state $foo; say ++$foo }; A[Int]; A[Str]
20:00 <+p6eval> rakudo 38165a:  ( no output )

Based on TimToday's comments below, is this closable?

> <masak> aww :)
> * masak submits rakudobug
> <jnthn> masak: state nyi in Rakudo
> <jnthn> (master)
> <masak> oh.
> <jnthn> well
> <jnthn> file ticket anyway
> <masak> alpha: role A[::T] { state $foo; say ++$foo }; A[Int]; A[Str]
> <p6eval> alpha 30e0ed:  ( no output )
> <jnthn> There's no promise it'll just work right off.
> <TimToady> if you want multiple state vars in role, that probably
> means there's a missing clone
> <TimToady> since cloning dups state vars
> <masak> TimToady: what would the above code print? 1\n2\n, right?
> <ash_> well, in that case, my thoughts wouldn't work right, if state
> is cloned
> <TimToady> masak: it doesn't print anything in my head before I've had
> my coffee
> <masak> TimToady: :)
> <TimToady> I'm just saying that *if* role clones its block on
> instantiation, you'd get 1,1
> <masak> nod.
> <TimToady> but if you had state $.foo, it'd presumably put an accessor
> to each 1
> <masak> right now it prints nothing, even in alpha, so it's definitely
> a bug :)
> <TimToady> my brane is NYI today


-- 
Will "Coke" Coleda

Reply via email to