Use binding:

my @x= <1 2 3>; my @y := @x but Iterable; say @y.^name; #  OUTPUT:
«Array+{Iterable}␤»

El mar., 12 jun. 2018 a las 9:06, Joseph Brenner (<doom...@gmail.com>)
escribió:

> I thought this would work to make a copy of @x but with the role
> "LookInside" attached to it:
>
>    my @y = @x but LookInside;
>
> But that didn't add the role to @y. E.g.
>
>   say @y.^WHAT
>
> Would just report (Array), not (Array+{LookInside}).
>
> I found that this would do what I was trying to do though:
>
>    my @y = @x;
>    @y does LookInside;
>
> I didn't think there would be any difference between the two
> though.  What am I not getting?
>
> The full code looks like this:
>
> trial_introspect.pl6:
>
>   use v6;
>   use Trial::Introspect;
>   my @x = <wuhn tew thuree foah fahv sex>;
>   my @y = @x;
>   @y does LookInside;
>   say "Methods: ";
>   say @y.methodical_methods;
>
>
> .../Trial/Introspect.pm6:
>
>   role LookInside {
>     method methodical_methods {
>       self.^methods.map({ .gist }).sort.unique.map({ "$_\n" }).grep({
> ! /^Method/ });
>     }
>   }
>


-- 
JJ

Reply via email to