> On 18 Dec 2015, at 03:46, TS xx <[email protected]> wrote:
>
> Hello dear perl6 users,
>
> I was in the need of declaring a member variable as a constant integer. After
> many syntax tryouts I came to this one:
>
> class MyClass {
> has int $.myConst;
>
> method new () {
> return self.bless();
> }
>
> submethod BUILD () {
> constant $!myConst = 1;
> }
>
> method showMyConst () {
> print $!myConst;
> }
> }
>
> But I'm getting the followinf error message: "Twigil-Variable constants not
> yet implemented. Sorry."
>
> The only place in the docs where I have found any reference to constants is
> in here: https://doc.perl6.org/language/variables#The_%3F_Twigil
> But it's not what I am looking for :/
>
> So my questions are:
> Is the syntax right and the thing isn't implemented yet?
> Is the syntax (or the full concept) wrong?
> Do I have and old interpreter (This is perl6 version 2015.02 built on MoarVM
> version 2015.02)?
Yes, that is ancient in rakudo years :-)
The question you should ask you: is the constant different for each
instantiated object or not.
If not, and you only need it inside of your class, you can just make it a
constant in the mainline of the class:
class MyClass {
constant FOO = 42;
…
}
If you need to expose a method returning such a constant:
class MyClass {
method FOO { 42 }
…
}
Otherwise, you probably just need to add an attribute.
Liz