thank It is now more clear. And I like this notation |%a<column1> ==> map({.sqrt}); less is more sometimes
On Wed, Jul 14, 2021 at 4:41 PM Daniel Sockwell <dan...@codesections.com> wrote: > To expand slightly on what Clifton said, the reason that > > > %a<column3> = %a<column1>.map: { .sqrt }; > > # (1 1.4142135623730951 1.7320508075688772 2 2.23606797749979) > > does what you mean but > > > %a{'column1'} ==> map( { .sqrt } ) > > # (2.23606797749979) > > does not is that the method .map maps over *each item* in the Array, > whereas > ==> map maps over the Array as *one collection*. When taking the square > root, > an Array needs to be treated as an number, which for Raku means treating > it as > a count of how many elements it has (i.e., its length). > > So `%a{'column1'} ==> map({.sqrt})` is the same as > `%a{'column1'}.elems.map({.sqrt})` > > If want to map over each item in the Array when using the ==> operator, > you need to > slip the items out of the Array before feeding them on. You can do that > with either > of the following (equivalent) lines: > > > %a{'column1'}.Slip ==> map({.sqrt}); > > |%a{'column1>'}==> map({.sqrt}); > > (Also, you may already know this, but when the keys of your hash are > strings, you > can write %a<column1> instead of %a{'column1'} ) > > Hope that helps! > > –codesections > -- Aureliano Guedes skype: aureliano.guedes contato: (11) 94292-6110 whatsapp +5511942926110