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