Hello,
I think that that was exactly what Norman was trying to show. Probably
you've been mislead by the first value they assigned in their example:
my $CC = AA.new( I => [Str,"abc"] );
>
Here the 'Str' is the "empty" or "undefined" value, since the array was
declared as a Str array.
Try this:
> class AA { has Str @.I is rw }
(AA)
> my $aa = AA.new: I => ['a','b']
AA.new(I => Array[Str].new("a", "b"))
> say $aa.I[0]
a
> say $aa.I[1]
b
or this
> my $bb = AA.new: I => 'a'
AA.new(I => Array[Str].new("a"))
> $bb.I[0]
a
On Tue, Jul 6, 2021 at 9:39 AM ToddAndMargo via perl6-users <
[email protected]> wrote:
> >> On Tue, 6 Jul 2021 at 10:55, ToddAndMargo via perl6-users
> >> <[email protected] <mailto:[email protected]>> wrote:
> >>
> >> Hi All,
> >>
> >> On creation, I would like to salt some of the
> >> values inside an object when the variable
> >> inside is an array:
> >>
> >>
> >> First a concept test:
> >> $ p6 'class AA { has Str @.I is rw; }; my $CC= AA.new; $CC.I[1] =
> >> "def";
> >> say $CC.I[1];'
> >>
> >> def
> >>
> >>
> >> Now for the pre-salt test
> >> $ p6 'class AA { has Str @.I is rw; }; my $CC = AA.new( I[1] =>
> >> "abc" );
> >> say $CC.I[1];'
> >>
> >> ===SORRY!=== Error while compiling -e
> >> Undeclared name:
> >> I used at line 1
> >>
> >>
> >> What am I doing wrong?
> >>
> >> Many thanks,
> >> -T
>
> On 7/5/21 10:45 PM, Norman Gaywood wrote:
> > $ raku
> > Welcome to 𝐑𝐚𝐤𝐮𝐝𝐨™ v2021.06.
> > Implementing the 𝐑𝐚𝐤𝐮™ programming language v6.d.
> > Built on MoarVM version 2021.06.
> >
> > To exit type 'exit' or '^D'
> > > class AA { has Str @.I is rw; };
> > (AA)
> > > my $CC = AA.new( I => [Str,"abc"] );
> > AA.new(I => Array[Str].new(Str, "abc"))
> > > say $CC.I;
> > [(Str) abc]
> > > say $CC.I[1];
> > abc
> > > $CC.I[0] = "zyz";
> > zyz
> > > say $CC.I;
> > [zyz abc]
> > >
> >
>
> Hi Norman,
>
> I am confused.
>
> What I am after it pre-salting $CC.I with
> $CC.[0] = "abc"
> $CC.[1] = "def"
>
> with the ".new" functions when I create $CC
>
> -T
>
>
--
Fernando Santagata